Così ho impostato una notifica per l'evento di comparsa tastiera. Consideriamo ora un UITextView e un UITextField.Notifiche UITextField e tastiera - ordine strano
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];
Il selettore è:
- (void)keyboardWillShow:(NSNotification *)notification {
keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
}
In caso di UITextView, il metodo delegato - (void)textViewDidBeginEditing:(UITextView *)textView
viene generato DOPO metodo keyboardWillShow:
. Quindi keyboardSize ha le dimensioni effettive della tastiera e sono in grado di utilizzarlo all'interno del metodo delegati textview.
Tuttavia in caso di UITextField, il metodo delegato corrispondente - (void)textFieldDidBeginEditing:(UITextField *)textField
viene generato PRIMA metodo keyboardWillShow:
.
Perché è così? Come faccio a ottenere il CGSize
della tastiera nel caso del campo di testo poiché ora restituisce solo zero perché il delegato del campo di testo viene chiamato per primo e non il selettore della tastiera.
Nel mio caso semplice dispatch_async (mainQueue,^{}) aiutato. – Andy