2013-06-06 29 views
8

Klawiatura ukrywa się po kliknięciu wyszukiwania lub po kliknięciu przycisku Anuluj. Ale chcę też, żeby klawiatura chowała się, gdy kliknę gdzieś na ekranie. Znalazłem kilka samouczków dla pola tekstowego, ale używamy paska wyszukiwania.Jak ukryć klawiaturę podczas dotykania ekranu (pasek wyszukiwania)?

Czy ktoś może mi powiedzieć, jak to zrobić?

Dzięki.

+0

Czy próbowałeś tę odpowiedź za Jensen2k: http://stackoverflow.com/questions/5306240/iphone-dismiss-keyboard-when-touching-outside-of-textfield – mfaerevaag

+0

dzięki za odpowiedź. Tak, próbowałem też tego. Problem polega na tym, że nie mam pola tekstowego, do którego również dołączono klawiaturę. Pasek wyszukiwania wywołuje klawiaturę, więc muszę zrezygnować z paska wyszukiwania. Czy znasz inne rozwiązanie? Dzięki i tak! – Rick

Odpowiedz

29

Try To

w pliku .h dodać UISearchBar

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

w pliku .m

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

    [self.view addGestureRecognizer:tap]; 
} 


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

Wypróbowana pierwsza część nie dała żadnych błędów, druga część mówi ponownie: "Unkown receiver" searchBar "; miałeś na myśli UISearchBar? Dzięki za pomoc. Myślę, że to jest blisko. – Rick

+0

Tak, mam na myśli UISearchBar. Zredaguj swój plik IBIStlementu UISearchBar w swoim interfejsie h. – iMubarak

+0

Tak, zapomniałem wpisać: @synthesize searchBar; w moim pliku .m. Teraz działa. Dzięki: D – Rick

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

Prawdopodobnie musisz sprawdzić, gdzie się znajdujesz, ponieważ nie chcesz ukrywać klawiatury, jeśli dotykasz pola wprowadzania tekstu lub pola wyszukiwania.

+0

Próbowałem tego również kilka razy. Pojawia się następujący błąd: Unkown odbiornik "searchBar" miałeś na myśli UIDearchBar? – Rick

0

spróbuje użyć ten

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

Nie dostaję żadnych błędów, ale to też nie działa. Nic się nie dzieje. Dzięki i tak! – Rick

+0

Myślę, że robisz coś złego w swoim kodzie. –

+0

To już nie działa. Jestem na XCode 7.1, iOS 9.0. –

0

Mogłabyś dodaj UITapGestureRecognizer do d ismiss na klawiaturze.

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

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