Após a atualização para a sugestão do iOS 13 (e-mail, número de telefone, nome…), o UITextField não aparece acima do teclado

11

Após atualizar o dispositivo para o iOS 13, sugestão de entrada para inputField (UITextField). Como email, número de telefone, nome e sobrenome não aparecem mais acima do teclado. A primeira imagem do iOS 12.4.1 sugeriu e-mail, a segunda imagem do iOS 13.1.2 não tem nenhuma sugestão. O mesmo aplicativo de demonstração é construído com o xCode Versão 11.0 (11A419c) no iPhone 7 iOS 12.4.1 (primeira imagem, funciona conforme o esperado). iPhone 7 iOS 13.1.2 (segunda imagem, sem sugestão acima do teclado) Testei adicionando textContentType no storyboard e também adicionando a próxima linha no código diretamente

email.textContentType = .emailAddress

No iOS 12.4.1, everting funcionando conforme o esperado

e

iOS 13.1.2 não mostra sugestão

Stefan Simic
fonte
Versão do Xcode?
Lal Krishna

Respostas:

11

Portanto, para o iOS 13 (ou superior), notei que a configuração das seguintes propriedades faz com que o iPhone sugira todos os dados:

Para email, verifique se todas essas três propriedades estão definidas:

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

Para nome e sobrenome:

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

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

Para o número de telefone é um pouco complicado:

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

Verifique também se Predictive in Keyboards Setting do dispositivo está ativado . Se não funcionar de uma vez, desligue-o, aguarde alguns segundos e, em seguida, ligue-o novamente e boom, ele estará funcionando novamente.

Espero que ajude!

Sudhanshu Vohra
fonte
Para nomes e números de telefone, você pode definir "keyboardType" como ".namePhonePad"
Neil