Como posso detectar quando o teclado é mostrado e oculto do meu aplicativo?
ios
iphone
iphone-sdk-3.0
user198725878
fonte
fonte
Respostas:
No método ViewDidLoad de sua classe, configure para ouvir mensagens sobre o teclado:
Então, nos métodos que você especificar (neste caso
keyboardDidShow
ekeyboardDidHide
), você pode fazer algo a respeito:fonte
UITextFieldDelegat
e, em seguida, implemente otextFieldShouldReturn:
método. Você obterá o quetextField
acabou de inserir como um argumento, que pode comparar com seus próprios textFields e rolar oscrollView
para que o textField apropriado seja exibido.Você só precisa
addObserver
entrarviewDidLoad
. Mas tendoaddObserver
dentroviewWillAppear
eremoveObserver
dentroviewWillDisappear
evita travamentos raros que acontecem quando você muda sua visão.Swift 4.2
Swift 3 e 4
Swift mais velho
fonte
deinit
assim:deinit { NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil) }
deinit { NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil) }
Swift 3:
fonte
Swift 4:
Em seguida, adicionando método para parar de ouvir notificações quando a vida útil do objeto terminar: -
fonte
+=
parece fazer as inserções ficarem cada vez maiores.UIResponder.keyboardWillShowNotification
eUIResponder.keyboardWillHideNotification
, e a tecla de informações do teclado éUIResponder.keyboardFrameBeginUserInfoKey
.Swift - 4
fonte
Verifique a seção Gerenciando o Teclado do "Guia de Programação de Texto, Web e Edição" para obter informações sobre como rastrear o teclado que está sendo mostrado ou oculto e como exibi-lo / descartá-lo manualmente.
fonte
Você vai querer se registrar para as 2 notificações de teclado:
Excelente postagem sobre como ajustar seu TextField ao teclado - http://iosdevelopertips.com/user-interface/adjust-textfield-hidden-by-keyboard.html
fonte
No Swift 4.2, os nomes das notificações foram movidos para um namespace diferente. Então agora é
fonte
Swift 5
As respostas acima estão corretas. Embora eu prefira criar um auxiliar para finalizar o
notification's observers
.O benefício:
Código de amostra:
Como usar:
}
fonte
Swift 4 -
dd 20 october 2017
fonte
Se você tiver mais de um
UITextField
se precisar fazer algo quando (ou antes) do teclado aparecer ou desaparecer, você pode implementar esta abordagem.Adicione
UITextFieldDelegate
à sua classe. Atribuir contador inteiro, digamos:Defina este contador como zero em algum lugar
viewDidLoad
. Em seguida, implementetextFieldShouldBeginEditing
etextFieldShouldEndEditing
delegue métodos.No primeiro, adicione 1 a editCounter. Se o valor de editCounter se tornar 1 - isso significa que o teclado aparecerá (no caso, se você retornar YES). Se editCounter> 1 - significa que o teclado já está visível e outro UITextField mantém o foco.
Em
textFieldShouldEndEditing
subtrair 1 editCounter. Se você obtiver zero - o teclado será descartado, caso contrário, permanecerá na tela.fonte
Você pode usar a biblioteca KBKeyboardObserver . Ele contém alguns exemplos e fornece uma interface simples.
fonte
Existe um CocoaPods para facilitar a observação
NSNotificationCentr
para a visibilidade do teclado aqui: https://github.com/levantAJ/Keyhipod 'Keyhi'
fonte
Então, ah, esta é a verdadeira resposta agora.
fonte