Po aktualizacji do sugestii iOS 13 (e-mail, numer telefonu, imię…) dla UITextField nie pojawiają się nad klawiaturą

11

Po zaktualizowaniu urządzenia do iOS 13 sugestia wejściowa dla inputField (UITextField). Podobnie jak adres e-mail, numer telefonu, imię, nazwisko nie pojawiają się już nad klawiaturą. Pierwsze zdjęcie iOS 12.4.1 sugeruje e-mail, drugie zdjęcie iOS 13.1.2 nie ma żadnych sugestii. Ta sama aplikacja demonstracyjna jest budowana z xCode wersja 11.0 (11A419c) na iPhone 7 iOS 12.4.1 (pierwszy obraz, działa zgodnie z oczekiwaniami). iPhone 7 iOS 13.1.2 (drugi obraz, nie mam żadnych sugestii powyżej klawiatury) Przetestowałem, dodając textContentType w serii ujęć, a także dodając bezpośrednio następny wiersz kodu

email.textContentType = .emailAddress

Na iOS 12.4.1 zawsze działa zgodnie z oczekiwaniami

i

iOS 13.1.2 nie wyświetla sugestii

Stefan Simic
źródło
Wersja Xcode?
Lal Krishna

Odpowiedzi:

11

W przypadku systemu iOS 13 (lub nowszego) zauważyłem, że ustawienie następujących właściwości powoduje, że iPhone sugeruje wszystkie dane:

W przypadku wiadomości e-mail upewnij się, że wszystkie te trzy właściwości są ustawione:

 emailField.autocorrectionType = .yes
 emailField.textContentType = .emailAddress
 emailField.keyboardType = .emailAddress

Na imię i nazwisko:

firstNameField.autocorrectionType = .yes
firstNameField.textContentType = .givenName
firstNameField.keyboardType = .namePhonePad

lastNameField.autocorrectionType = .yes
lastNameField.textContentType = .familyName
lastNameField.keyboardType = .namePhonePad

W przypadku numeru telefonu jest to nieco trudne:

phoneField.autocorrectionType = .yes
phoneField.textContentType = .telephoneNumber
phoneField.keyboardType = .numbersAndPunctuation

Upewnij się również, że funkcja przewidywania w ustawieniach klawiatury urządzenia jest włączona . Jeśli nie działa od razu, wyłącz go, odczekaj kilka sekund, a następnie włącz go ponownie i boom, będzie działał ponownie.

Mam nadzieję, że to pomoże!

Sudhanshu Vohra
źródło
W przypadku nazw i numerów telefonów możesz ustawić „keyboardType” na „.namePhonePad”
Neil,