Pergunta

Todos os exemplos que eu posso encontrar de criação de um olhar notificação como esta:

[nc addObserver: auto seletor: @selector (keyboardWillShow :) Nome: UIKeyboardWillShowNotification objeto: nil];

, onde objeto está sendo sempre definido como nulo. objeto é o notificationSender, que é definida thusly na documentação:

"O objeto cujo notificações observador quer receber, ou seja, apenas notificações enviadas por este remetente são entregues ao observador Quando nulo, o centro de notificação não usa remetente de uma notificação para decidir se a entregá-lo ao. observador. "

Eu quero receber a notificação teclado somente para uma exibição de texto particular, então eu quero dizer addObserver isso, mas eu não sei o que dar para o objeto. Eu tentei a variável de saída que está vinculado à exibição de texto que eu estou interessado, mas que apenas resultou na minha recebendo nenhuma notificação a todos.

Todas as sugestões?

Foi útil?

Solução

O UIKeyboardWillShowNotification é proveniente de sua instância janela, e para todos os efeitos, é uma notificação de "sistema". O teclado é ou mostrar ou não mostrar, não é realmente algo que está vinculado a um controle específico.

Se você quiser fazer alguma coisa quando um usuário entra em um campo de texto específico, você provavelmente deve controlar que na delegado do campo de texto em vez disso.

Outras dicas

Neste caso, você não pode obter a notificação apenas para uma exibição de texto particular, como o docu para UIKeyboardWillShowNotification diz: "O objeto de notificação é nula.".

Você tem que verificar em sua keyboardWillShow impl se a sua visão particular de texto isFirstResponder.

Eu tinha duas necessidades concorrentes - Eu tive que usar a notificação teclado porque eu precisava para obter a altura do teclado, que parece estar disponíveis apenas dessa forma, mas eu também precisava saber qual modo de exibição de texto que eu estava, o que significava também usando o delegado textViewDidBeginEditing. Depois de muito mexer eu finalmente recorreu para obter a altura do teclado no método de notificação e armazená-lo em uma variável de instância, que era então disponíveis para uso no método delegado (eu preciso rolar a exibição para que a exibição de texto fundo não é mais escondida sob eles teclado quando eles começam a digitação). A deselegante pouco, mas funciona.

Obrigado pelas dicas!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top