2014-11-19 18 views
6

Jestem świadomy keyboardWillShow i wydarzeń keyboardWillHide przez:Zmiana wielkości klawiatury w szybkim tempie?

override public func viewWillAppear(animated: Bool) { 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil) 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil) 
    } 

ale z nowych klawiaturach systemów iOS 8 klawiatura jest w stanie zmienić bez odwoływania klawiaturę i zastanawiałem się, jak wywołać funkcję na wielkość klawiatury zmiana. Ktoś wie? Dzięki.

Edit: To jest teraz wzywając zmiany kadru, ale przy użyciu tego kodu:

if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() { 
      NSLog("\(keyboardSize.height)") 
     } 

zwraca starą wysokość klawiatury, na przykład, gdy zmienia się rama do „224,0” powraca „253,0” jakby wysokość nie aktualizowana od czasu kod jest nazywany, a gdy idzie muszą „253,0” powraca stary wysokość znowu która jest „224,0”

Edit 2: Zamiast „UIKeyboardFrameBeginUserInfoKey” użyłem „UIKeyboardFrameEndUserInfoKey” i teraz działa.

Odpowiedz

3

Chcesz UIKeyboardWillChangeFrameNotification i/lub UIKeyboardDidChangeFrameNotification.

Zobacz wszystkie documentation of UIWindow dla wszystkich powiadomień związanych z klawiaturą.

+0

Działa dobrze, ale czy znasz odpowiedź na moje zaktualizowane pytanie powyżej? – uhfocuz

+0

Wymyśliłem to. – uhfocuz

+0

Czy możesz udostępnić swoje rozwiązanie @uhfocuz? – andromedainiative

Powiązane problemy