2010-01-28 16 views
6

voglio cambiare le UITextInputTraits di una tastiera mentre è in uso ....È possibile modificare UITextInputTraits mentre è visualizzata una UIKeyboard?

mio codice ideale sarebbe simile a questa:

- (IBAction)nameTextDidChange:(UITextField *)sender { 
    if ([sender.text isEqualToString:@""]) { 
     sender.returnKeyType = UIReturnKeyDone; 
    } else { 
     sender.returnKeyType = UIReturnKeySearch; 
    } 
} 

Quindi ... Ho un diverso Tasto 'Return' per una stringa vuota mentre faccio una stringa con del testo in. Il codice che ho postato sopra non funziona, la tastiera mantiene i suoi tratti di input di testo originali.

Qualche idea a qualcuno, o non funzionerà mai, non importa quanto ci provi?

Cheers!

Nick.

Grazie a Deepak, questo è il codice che ho effettivamente utilizzato:

if ([sender.text isEqualToString:@""]) { 
    sender.returnKeyType = UIReturnKeyDone; 

    [sender resignFirstResponder]; 
    [sender becomeFirstResponder]; 
} else if (sender.returnKeyType == UIReturnKeyDone) { 

    NSString *cachedLetter = sender.text; 

    sender.returnKeyType = UIReturnKeySearch; 

    [sender resignFirstResponder]; 
    [sender becomeFirstResponder]; 

    sender.text = cachedLetter; 
} 

risposta

5

È possibile fare questo lavoro aggiungendo le seguenti righe alla fine del metodo.

if ([textField.text isEqualToString:@""]) { 
    textField.returnKeyType = UIReturnKeyDone; 

    [textField resignFirstResponder]; 
    [textField becomeFirstResponder]; 
} else if (textField.returnKeyType == UIReturnKeyDone) { 
    textField.returnKeyType = UIReturnKeySearch; 

    [textField resignFirstResponder]; 
    [textField becomeFirstResponder]; 
} 

Questo dovrebbe funzionare.

Fondamentalmente lo si attiva e si disattiva in modo che l'immissione del testo cambi. Il secondo se è quello di assicurarti di girare solo se necessario.

+0

Genio, grazie mille per questo. Ha funzionato quasi alla perfezione .. l'unica cosa che non ha funzionato è stata quando ti sei dimesso da una tastiera, hai perso il testo in UITextField - così ho dovuto solo memorizzarlo nella cache! Pubblicherò per gli altri il codice esatto che ho usato nella mia domanda. –

4

[textField reloadInputViews] sembra fare il trucco ...

+0

Funziona altrettanto bene della risposta di Deepak Danduprolu per me – richy

0

resignFirstResponder/becomeFirstResponder & reloadInputViews hanno alcuni avvertimenti. Vedi stackoverflow.com/questions/5958427/.... Questi cambiano la tastiera al suo stato iniziale. Quindi, se l'utente si fosse spostato su uno degli altri layout di tastiera (numeri, punteggiatura, ecc.), Quello stato andrebbe perso. Non ho mai trovato una buona soluzione.

Problemi correlati