Wysokość klawiatury na różnych urządzeniach z systemem iOS jest różna. Czy ktoś wie, jak programowo mogę uzyskać wysokość klawiatury urządzenia?
ios
swift
uikeyboard
Lachtan
źródło
źródło
Odpowiedzi:
W Swift:
Możesz uzyskać wysokość klawiatury, subskrybując
UIKeyboardWillShowNotification
powiadomienie. (Zakładając, że chcesz wiedzieć, jaka będzie wysokość, zanim zostanie wyświetlona).Coś takiego:
Szybki 2
Szybki 3
Szybki 4
Następnie możesz uzyskać dostęp do wysokości w
keyboardWillShow
takich funkcjach:Szybki 2
Szybki 3
Szybki 4
źródło
UIResponder.keyboardWillShowNotification
w nazwie bitSwift 3.0 i Swift 4.1
1- Zarejestruj zgłoszenie w
viewWillAppear
metodzie:2- Metoda do wywołania:
źródło
keyboardWillShow
ustawić parametr typu,Notification
aby ten był bardziej zgodny ze Swift 3.0.viewDidLoad
otrzymywania powiadomień nie jest dobrym pomysłem: gdzie umieszczasz pasująceremoveObserver
wywołanie, aby gdy ten VC nie był już wyświetlany, przestał otrzymywać powiadomienia? Lepiej jest wprowadzić rejestrację na powiadomieniaviewWillAppear
, a następnieremoveObserver
zadzwonićviewWillDisappear
Swift 4 i ograniczenia
Do widoku tabeli dodaj ograniczenie dołu względem dolnego bezpiecznego obszaru. W moim przypadku ograniczenie nazywa się tableViewBottomLayoutConstraint.
źródło
Zaktualizuj Swift 4.2.0
metoda selektora:
rozbudowa:
Zaktualizuj Swift 3.0
metoda selektora:
rozbudowa:
Wskazówka
UIKeyboardDidShowNotification lub UIKeyboardWillShowNotification może wywołać dwukrotnie i uzyskać inny wynik, w tym artykule wyjaśniono, dlaczego wywołano dwukrotnie.
W Swift 2.2
Swift 2.2 deprecates pomocą ciągów dla selektorów i zamiast tego wprowadza nową składnię:
#selector
.Coś jak:
metoda selektora:
rozbudowa:
źródło
Krótsza wersja tutaj:
źródło
Szybki 4 .
Najprostsza metoda
źródło
Szybki 5
źródło
// Krok 1: - Zarejestruj NotificationCenter
// Krok 2: - Te metody zostaną wywołane automatycznie, gdy klawiatura pojawi się lub ukryje
źródło
Metoda ZAFAR007 zaktualizowana dla Swift 5 w Xcode 10
źródło
Musiałem to zrobić. to trochę hakera. nie sugerowane.
ale uznałem to za bardzo pomocne
, zrobiłem rozszerzenie i strukturę
Rozszerzenie ViewController + Struct
Sposób użycia:
uzyskaj najbardziej dolne ograniczenie
wywołaj funkcję wewnątrz viewDidLoad ()
Mam nadzieję, że to pomoże.
- klawiatura będzie teraz automatycznie zamykana, gdy użytkownik dotknie pola tekstowego poza polem tekstowym, oraz
- przesunie cały widok do górnej klawiatury, gdy pojawi się klawiatura -Możesz
także użyć dismissKeyboard (), kiedy tylko tego potrzebujesz
źródło
Używam poniższego kodu,
źródło