2012-04-19 20 views
9

Moja klawiatura jest wyświetlana z tekstem, chcę ją ukryć, gdy użytkownik naciska przycisk Wstecz na pasku nawigacyjnym.Jak ukryć klawiaturę po naciśnięciu przycisku wstecz UINavigationBar na ios

Próbowałem to:

-(void)viewWillDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

a to:

-(void)viewDidDisappear:(BOOL)animated{ 

    [myTextView resignFirstResponder]; 
} 

Ale to nie działa, jak mogę to zrobić?

edit:

znalazłem rozwiązanie tutaj:

iPad keyboard will not dismiss if modal ViewController presentation style is UIModalPresentationFormSheet

+0

upewnić się IBoutlets są zbindowanych poprawnie i viewDid/WillDisappear są nazywane przez wprowadzenie oświadczeń NSLog –

+0

Nie należy mieć nawet samemu zrezygnować z pierwszej odpowiedzi. Gdy widok zniknie z ekranu, powinien automatycznie zrezygnować i mieć klawiaturę znikającą. Możesz przetestować to zachowanie, tworząc nowy projekt dla iPhone'a z szablonem "Master-Detail Application". Otwórz scenorys i przejdź do ekranu szczegółów. Dodaj "UITextField" do widoku i uruchom aplikację. Po dotknięciu pola pojawia się klawiatura, a po naciśnięciu przycisku wstecz na pasku nawigacji znika. – DBD

+0

To prawda, ale, ale sprawa przychodzi, kiedy naciskam przycisk, pojawia się formularz modalny z UINavigationController, wciskam inny przycisk, który poruszam się w innym widoku, wciskam w textView, pojawia się klawiatura, wracam poprzedni widokController i keybord są nadal obecne. – Anthony

Odpowiedz

17

Włóż to do metody buttonpress -

[self.view.window endEditing:YES]; 

Edit - Pozwala również uzyskać zawartości katalogu tekst jest edytowany po naciśnięciu przycisku "wstecz".

+0

w tym celu należy zastąpić domyślny przycisk nawigacji po lewej stronie nawigacji –

+0

Wiem - całkiem prosto do przodu – SomaMan

+0

to działa dla mnie ... – iSwaroop

2

Łącząc powyższe odpowiedzi i sprawdzanie tyłu przycisk zostanie wykonana przez tego

- (void)viewWillDisappear:(BOOL)animated{ 
if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { 
    // back button was pressed. We know this is true because self is no longer 
    // in the navigation stack. 
    [self.view.window endEditing:YES]; 
} 

[super viewWillDisappear:animated]; 

}

Powiązane problemy