2012-06-09 10 views

risposta

150

Implementare il metodo delegato

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.yourIBtextField.delegate = self; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    [textField resignFirstResponder]; 
    return NO; 
} 
+17

La parte che mi mancava era l'aggiunta di per l'interfaccia nel file * .h. Una volta che l'ho aggiunto, questo codice ha funzionato senza problemi. Spero che aiuti qualcun altro a uscire! – proudgeekdad

+7

In questa situazione è richiesto . – brooNo

+3

È anche possibile connettere il delegato dallo storyboard (xib), se si trascina la connessione da textField alla rappresentazione viewController. In questo modo non devi scrivere la riga dal metodo viewDidLoad. – Luka

9

UITextView non ha metodi che saranno chiamati quando l'utente preme il tasto Invio.

Anche se si desidera eseguire questa operazione, implementare textView: shouldChangeTextInRange: replacementText: metodo di UITextViewDelegate e verificare che il testo sostitutivo sia \ n, nascondere la tastiera.

Potrebbero esserci altri modi, ma non ne sono a conoscenza.

Assicurarsi di dichiarare il supporto per il protocollo UITextViewDelegate.

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
replacementText:(NSString *)text { 

    if([text isEqualToString:@"\n"]) { 
     [textView resignFirstResponder]; 
     return NO; 
    } 
    return YES; 
} 

Spero che possa essere di grande aiuto.

+0

Questo ripristina le mie impostazioni nascoste per qualche motivo. Qualche idea del perché? – John

+0

puoi fornire ulteriori dettagli, ad esempio quale tipo di impostazione nascosta? –

1

Categoria Marchio su UIViewController con metodo successivo

- (void)hideKeyboard 
{ 
    [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) 
               to:nil 
              from:nil 
             forEvent:nil]; 
} 
Problemi correlati