Domanda

Questo è un problema di ordine delle operazioni

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];    
[nc addObserver:self 
       selector:@selector(keyboardWillShow:) 
           name:UIKeyboardWillShowNotification 
         object:nil];
[nc addObserver:self 
       selector:@selector(keyboardWillHide:) 
           name:UIKeyboardWillHideNotification 
         object:nil];

E poi aggiungo una casella di testo a un UITableViewCell:

[textField addTarget:self 
              action:@selector(textFieldBegin:) 
    forControlEvents:UIControlEventEditingDidBegin];

[cell addSubview:textField];

In textFieldBegin, ho scrollToRowAtIndexPath per passare alla cella in fase di modifica.
In keyboardWillShow regola la cornice del tableView per consentire alla tastiera.
textFieldBegin viene chiamato prima keyboardWillShow , quindi la prima volta che viene dimostrato che non ha spazio per scorrimento.

C'è un modo per risolvere questo problema elequent svista?

È stato utile?

Soluzione

È possibile memorizzare la posizione di scorrimento corrente in una variabile durante l'inizio, poi nella notifica keyboardwillshow si potrebbe ri-scroll a qualsiasi posizione è memorizzato in quella variabile.

Credo che permetterebbe di mantenere le diverse animazioni a cui appartengono.

Altri suggerimenti

Invece di ascoltare per la UIKeyboardWillShowNotification si può reagire al metodo UITextFieldDelegate textFieldDidBeginEditing: e ridimensionamento / scorrere in quel metodo, dal momento che è chiamato dopo la tastiera viene mostrato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top