2010-07-26 2 views
38

W Zarządzanie klawiaturze documentation:UIKeyboardFrameBeginUserInfoKey & UIKeyboardFrameEndUserInfoKey

UIKeyboardFrameBeginUserInfoKey Kluczem dla obiektu NSValue zawierającej CGRect identyfikującą ramkę rozpoczęcia klawiatury we współrzędnych ekranowych. Współrzędne te nie uwzględniają współczynników rotacji zastosowanych w przypadku do zawartości okna w wyniku zmian orientacji interfejsu. Zatem, może zaistnieć potrzeba, aby przekształcić prostokąt współrzędnych okna (przy użyciu się convertRect: fromWindow: metoda) lub aby zobaczyć współrzędne (używając convertRect: fromView: metoda) przed używania.

UIKeyboardFrameEndUserInfoKey Kluczem dla obiektu NSValue zawierającej CGRect identyfikującą ramkę końcowy klawiatury we współrzędnych ekranowych. Współrzędne te nie uwzględniają współczynników rotacji zastosowanych w przypadku do zawartości okna w wyniku zmian orientacji interfejsu. Zatem, może zaistnieć potrzeba, aby przekształcić prostokąt współrzędnych okna (przy użyciu się convertRect: fromWindow: metoda) lub aby zobaczyć współrzędne (używając convertRect: fromView: metoda) przed używania.

Jakie jest znaczenie start frame i end frame? Jaka jest różnica między nimi?

+0

LOL, że nawet z IOS7, Apple nie udało się udokumentować to - w Apple docs internetowych teraz, dwa klawisze mają ten sam komentarz doc, tylko na początku słowa/koniec różny, Doh! – Adam

Odpowiedz

47

Ramka początkowa to miejsce, w którym klawiatura znajduje się na początku animacji: poza ekranem, jeśli jest wyświetlana klawiatura, lub na ekranie, jeśli klawiatura jest ukryta. Ramka końcowa to miejsce, w którym klawiatura znajduje się na końcu animacji: odwrotnie. Możesz użyć różnicy między nimi, aby napisać jedną metodę, która reaguje zarówno na ukrywanie, jak i pokazywanie klawiatury.

Pamiętaj również o używaniu UIKeyboardAnimationCurveUserInfoKey i UIKeyboardAnimationDurationUserInfoKey podczas animowania zmian widoku: w ten sposób Twoje animacje i animacje systemu operacyjnego będą zsynchronizowane.

Kolejna wskazówka: Dokumentacja powiązana ze stanami: "Prostokąt zawarty w atrybutach UIKeyboardFrameBeginUserInfoKey i UIKeyboardFrameEndUserInfoKey w słowniku userInfo powinien być używany tylko dla zawartych w nim informacji o rozmiarze. Nie używaj początku prostokąta (który jest zawsze {0,0, 0,0}) w operacjach przecinania prostokątów ". Przynajmniej na iPadzie w systemie OS 3.2, nie jest to prawdą. Oba prostowniki mają ten sam rozmiar, podczas gdy początek, który jest współrzędnych ekranu, różni się między nimi.

Można znaleźć na to pytanie pomocne: UIKeyboardBoundsUserInfoKey is deprecated, what to use instead?

+5

Dzięki za świetną wskazówkę na temat UIKeyboardAnimationCurveUserInfoKey i UIKeyboardAnimationDurationUserInfoKey! – ohho

+0

Nie ma za co.Jeśli akurat pracujesz nad widokami tekstu w widoku tabeli, daj mi znać, co wymyślisz. –