2012-08-15 25 views
6

Próbuję ukryć klawiaturę w mojej aplikacji SplitView (ponieważ obejmuje ona część menu głównego). Jednak jedyne, co mogę znaleźć, to jak ukryć klawiaturę po użyciu pola tekstowego [TextField resignFirstResponder].Ukrywanie tablicy UIKeyboard

Czy istnieje inny sposób na ukrycie klawiatury?
Idealnie chciałbym użyć barButtonItem, który wyświetla menu, jako wyzwalacz do ukrycia klawiatury.

Odpowiedz

12

Użyj tego:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 
+0

dokładnie to, czego szukałem, działa idealnie! – BloonsTowerDefence

0

Musisz wysłać wiadomość o numerze -resignFirstResponder do instancji dowolnego elementu interfejsu użytkownika, który ma obecnie status pierwszego respondenta. Jeśli więc w klasie istnieje klasa firstNameTextField, która odpowiada instancji UITextField, musisz wysłać wiadomość do tego obiektu.

[self.firstNameTextField resignFirstResponder];

+0

Czy to działa w przypadku każdego elementu UI? Czy mogę użyć UIBarButtonItem? Cały mój problem polega na tym, że nie mam konkretnego pola tekstowego, z którym można by powiązać. – BloonsTowerDefence

+0

Technicznie każda instancja 'UIView' może zostać pierwszą odpowiedzią, ponieważ jest podklasą' UIResponder', ale wywołuje ona tylko klawiaturę, jeśli klasa jest zgodna z protokołem 'UITextInput'. Aby odrzucić klawiaturę za pomocą 'UIBarButtonItem', musisz podłączyć ten przycisk do metody, która wywołuje' resignFirstResponder' w aktywnym polu tekstowym. Jeśli po prostu chcesz ślepo zakończyć całą edycję, możesz również wysłać "endEditing:" do widoku głównego, a on przejdzie przez subviews i zrezygnuje z pierwszej odpowiedzi, na której kiedykolwiek ma obecnie podgląd. –

0

resignFirstResponder jest sposób aby to zrobić. Jeśli masz sytuację, w której Twój firstResponder nie jest skonfigurowany jako zmienna instancji (być może wygenerowana), możesz "dostać" swój pierwszyResponder używając this answer. Po uzyskaniu pierwszego obiektu ratownika po prostu go zrezygnuj!

mam nadzieję, że to pomoże.