W kilku przypadkach chcę dodać pasek narzędzi u góry klawiatury iPhone'a (jak na przykład w iPhone Safari podczas nawigowania po elementach formularza).
Obecnie określam prostokąt paska narzędzi za pomocą stałych, ale ponieważ inne elementy interfejsu są zmienne - paski narzędzi i paski nawigacyjne u góry ekranu - za każdym razem, gdy robimy niewielką zmianę interfejsu, pasek narzędzi traci wyrównanie.
Czy istnieje sposób, aby programowo określić położenie klawiatury w stosunku do bieżącego widoku?
źródło
Więc w zasadzie:
W metodzie init:
Następnie skorzystaj z metod opisanych powyżej, aby dostosować położenie paska:
Może to zrobić ładnie, animując zmianę pozycji, zawijając ją
źródło
UIKeyboardFrameBeginUserInfoKey
podające te same informacje.UIKeyboardFrameEndUserInfoKey
aby uzyskać ostatnią klatkę (w koordynatach ekranu) klawiatury. Możesz także użyćUIKeyboardAnimationDurationUserInfoKey
i,UIKeyboardAnimationCurveUserInfoKey
aby uzyskać pozostałe parametry, których potrzebujesz, aby dokładnie dopasować zachowanie klawiatury.Jest to oparte na istniejącej odpowiedzi od Tonklon - po prostu dodam fragment kodu, który pokazuje półprzezroczysty czarny pasek narzędzi na górze klawiatury, wraz z przyciskiem „gotowe” po prawej stronie:
a
-resignKeyboard
wygląda następująco:Mam nadzieję, że to komuś pomoże.
źródło
Jeśli zarejestrujesz się w celu
UIKeyboardWillShowNotification
UIKeyboardWillHideNotification
otrzymywania powiadomień z klawiatury, tj. Itp., Otrzymane powiadomienie będzie zawierało granice klawiatury wuserInfo
dict (UIKeyboardBoundsUserInfoKey
).Zobacz informacje o
UIWindow
klasie.źródło
W wersji 3.0 i nowszych możesz uzyskać czas trwania animacji i krzywą ze
userInfo
słownika powiadomień.na przykład, aby animować rozmiar widoku, aby zrobić miejsce na klawiaturę, zarejestruj się
UIKeyboardWillShowNotification
i wykonaj coś podobnego do:Zrób podobną animację dla
UIKeyboardWillHideNotification
.źródło
Utwórz tę metodę i wywołaj ją w ViewWillLoad:
źródło
Nie ma sposobu (AFAIK), aby uzyskać wymiary widoku klawiatury. Jest jednak stały, przynajmniej w każdej dotychczasowej wersji iPhone'a.
Jeśli obliczysz pozycję paska narzędzi jako odsunięcie od DOLNEGO widoku i weźmiesz pod uwagę rozmiar widoku, nie powinieneś się martwić, czy pasek nawigacyjny jest obecny, czy nie.
Na przykład
Zamiast definicji, możesz łatwo utworzyć plik
keyboardHeight
funkcję, która zwraca rozmiar na podstawie tego, czy klawiatura jest wyświetlana, i przenieść to pozycjonowanie paska narzędzi do osobnej funkcji, która reorganizuje układ.Może to również zależeć od tego, gdzie robisz to pozycjonowanie, ponieważ jest możliwe, że rozmiar widoku może się zmieniać między wczytywaniem a wyświetlaniem w zależności od konfiguracji paska nawigacyjnego. Uważam, że najlepszym miejscem do zrobienia tego będzie widok WillAppear.
źródło