2013-06-06 16 views
8

La tastiera si nasconde quando si fa clic su Cerca o quando si fa clic su Annulla. Ma voglio anche che la tastiera si nasconda quando clicco da qualche parte sullo schermo. Ho trovato diversi tutorial per il campo di testo, ma stiamo usando la barra di ricerca.Come nascondere la tastiera quando si tocca lo schermo (barra di ricerca)

Qualcuno può dirmi come si fa?

Grazie.

+0

Hai provato questa risposta da Jensen2k: http://stackoverflow.com/questions/5306240/iphone-dismiss-keyboard-when-touching-outside-of-textfield – mfaerevaag

+0

Grazie per la risposta. Sì, ho provato anche quello. Il problema è che non ho un campo di testo in cui è anche collegata la tastiera. La barra di ricerca chiama la tastiera quindi devo rassegnarla con la barra di ricerca. Conosci un'altra soluzione? Grazie comunque! – Rick

risposta

29

Try This

nel file .h aggiungere UISearchBar

@property (strong, nonatomic) IBOutlet UISearchBar *searchBar; 

nel file .m

- (void)viewDidLoad 
{ 
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(dismissKeyboard)]; 

    [self.view addGestureRecognizer:tap]; 
} 


- (void) dismissKeyboard 
{ 
    // add self 
    [self.searchBar resignFirstResponder]; 
} 
+0

Ho provato che la prima parte non ha dato alcun errore, la seconda parte dice ancora: "Ricevitore sconosciuto" searchBar "; intendevi UISearchBar? ' Grazie per l'aiuto. Penso che questo sia vicino. – Rick

+0

Sì, intendo la UISearchBar. Difetti il ​​tuo UISearchBar IBOutLet nel tuo file dell'interfaccia h. – iMubarak

+0

Sì, ho dimenticato di digitare: @synthesize searchBar; nel mio file .m. Ora funziona. Grazie: D – Rick

1
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    [yourTextField1 resignFirstResponder]; 
    [yourTextField2 resignFirstResponder]; 
    [yourTextField3 resignFirstResponder]; 
    [yourSearchBar resignFirstResponder]; 
    //etc 
} 

Ma probabilmente è necessario verificare dove si sta toccando poiché non si desidera nascondere la tastiera se si sta toccando un input di testo o una casella di ricerca.

+0

Ho provato anche questo un paio di volte. Ottengo il seguente errore: Ricevitore sconosciuto 'searchBar' intendevi UIDearchBar? – Rick

0

cercano di usare questo uno

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self.view endEditing:YES]; 
} 
+0

Non ho alcun errore, ma non funziona neanche. Non succede nulla Grazie comunque! – Rick

+0

Penso che stai facendo qualcosa di sbagliato nel tuo codice. –

+0

Questo non funziona più. Sono su XCode 7.1, iOS 9.0. –

0

Si potrebbe aggiungi un UITapGestureRecognizer a d ismiss la tua tastiera.

- (void)viewDidLoad { 
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(dismissKeyboard)]; 
    [self.view addGestureRecognizer:tap]; 
} 

- (void) dismissKeyboard { 
    [self.view endEditing:YES]; 
} 
Problemi correlati