traba teclado sale puedo problemas lento funciona escribir con activa iphone ios uitextfield uikeyboard

iphone - sale - se traba el teclado en whatsapp



Cambiar programáticamente el tipo de teclado UITextField (11)

¿Es posible cambiar programáticamente el tipo de teclado de un uitextfield para que algo como esto sea posible?

if(user is prompted for numeric input only) [textField setKeyboardType: @"Number Pad"]; if(user is prompted for alphanumeric input) [textField setKeyboardType: @"Default"];


Cambiar programáticamente UITextField Keyboard type swift 3.0

lazy var textFieldTF: UITextField = { let textField = UITextField() textField.placeholder = "Name" textField.frame = CGRect(x:38, y: 100, width: 244, height: 30) textField.textAlignment = .center textField.borderStyle = UITextBorderStyle.roundedRect textField.keyboardType = UIKeyboardType.default //keyboard type textField.delegate = self return textField }() override func viewDidLoad() { super.viewDidLoad() view.addSubview(textFieldTF) }


Este es el UIKeyboardTypes for Swift 3:

public enum UIKeyboardType : Int { case `default` // Default type for the current input method. case asciiCapable // Displays a keyboard which can enter ASCII characters case numbersAndPunctuation // Numbers and assorted punctuation. case URL // A type optimized for URL entry (shows . / .com prominently). case numberPad // A number pad with locale-appropriate digits (0-9, ۰-۹, ०-९, etc.). Suitable for PIN entry. case phonePad // A phone pad (1-9, *, 0, #, with letters under the numbers). case namePhonePad // A type optimized for entering a person''s name or phone number. case emailAddress // A type optimized for multiple email address entry (shows space @ . prominently). @available(iOS 4.1, *) case decimalPad // A number pad with a decimal point. @available(iOS 5.0, *) case twitter // A type optimized for twitter text entry (easy access to @ #) @available(iOS 7.0, *) case webSearch // A default keyboard type with URL-oriented addition (shows space . prominently). @available(iOS 10.0, *) case asciiCapableNumberPad // A number pad (0-9) that will always be ASCII digits. public static var alphabet: UIKeyboardType { get } // Deprecated }

Este es un ejemplo para usar un tipo de teclado de la lista:

textField.keyboardType = .numberPad


Hay una propiedad keyboardType para un UITextField :

typedef enum { UIKeyboardTypeDefault, // Default type for the current input method. UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active UIKeyboardTypeNumbersAndPunctuation, // Numbers and assorted punctuation. UIKeyboardTypeURL, // A type optimized for URL entry (shows . / .com prominently). UIKeyboardTypeNumberPad, // A number pad (0-9). Suitable for PIN entry. UIKeyboardTypePhonePad, // A phone pad (1-9, *, 0, #, with letters under the numbers). UIKeyboardTypeNamePhonePad, // A type optimized for entering a person''s name or phone number. UIKeyboardTypeEmailAddress, // A type optimized for multiple email address entry (shows space @ . prominently). UIKeyboardTypeDecimalPad, // A number pad including a decimal point UIKeyboardTypeTwitter, // Optimized for entering Twitter messages (shows # and @) UIKeyboardTypeWebSearch, // Optimized for URL and search term entry (shows space and .) UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated } UIKeyboardType;

Tu código debería leer

if(user is prompted for numeric input only) [textField setKeyboardType:UIKeyboardTypeNumberPad]; if(user is prompted for alphanumeric input) [textField setKeyboardType:UIKeyboardTypeDefault];


Hay una propiedad para esto llamada keyboardType . Lo que querrá hacer es reemplazar donde tiene cadenas @"Number Pad and @"Default con UIKeyboardTypeNumberPad y UIKeyboardTypeDefault .

Tu nuevo código debería verse más o menos así:

if(user is prompted for numeric input only) [textField setKeyboardType:UIKeyboardTypeNumberPad]; else if(user is prompted for alphanumeric input) [textField setKeyboardType:UIKeyboardTypeDefault];

¡Buena suerte!


Sí, puedes, por ejemplo:

[textField setKeyboardType:UIKeyboardTypeNumberPad];


Vale la pena señalar que si desea que un campo actualmente enfocado actualice el tipo de teclado de inmediato, hay un paso adicional:

// textField is set to a UIKeyboardType other than UIKeyboardTypeEmailAddress [textField setKeyboardType:UIKeyboardTypeEmailAddress]; [textField reloadInputViews];

Sin la llamada a reloadInputViews , el teclado no cambiará hasta que el campo seleccionado (el primer respondedor ) pierda y recupere el foco.

Se puede encontrar una lista completa de los valores de UIKeyboardType aquí , o:

typedef enum : NSInteger { UIKeyboardTypeDefault, UIKeyboardTypeASCIICapable, UIKeyboardTypeNumbersAndPunctuation, UIKeyboardTypeURL, UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad, UIKeyboardTypeNamePhonePad, UIKeyboardTypeEmailAddress, UIKeyboardTypeDecimalPad, UIKeyboardTypeTwitter, UIKeyboardTypeWebSearch, UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable } UIKeyboardType;


para las personas que desean usar UIDatePicker como entrada:

UIDatePicker *timePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 250, 0, 0)]; [timePicker addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged]; [_textField setInputView:timePicker]; // pickerChanged: - (void)pickerChanged:(id)sender { NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"d/M/Y"]; _textField.text = [formatter stringFromDate:[sender date]]; }


para que el campo de texto acepte alfanuméricos, solo establezca esta propiedad

textField.keyboardType = UIKeyboardTypeNamePhonePad;


Swift 4

Si intenta cambiar su tipo de teclado cuando se cumple una condición, siga esto. Por ejemplo: si queremos cambiar el tipo de teclado de Default a Number Pad cuando el conteo del campo de texto es 4 o 5, entonces haga esto:

textField.addTarget(self, action: #selector(handleTextChange), for: .editingChanged) @objc func handleTextChange(_ textChange: UITextField) { if textField.text?.count == 4 || textField.text?.count == 5 { textField.keyboardType = .numberPad textField.reloadInputViews() // need to reload the input view for this work } else { textField.keyboardType = .default textField.reloadInputViews() }


textFieldView.keyboardType = UIKeyboardType.PhonePad

Esto es para rápido. Además, para que esto funcione correctamente, debe configurarse después del textFieldView.delegate = self


_textField .keyboardType = UIKeyboardTypeAlphabet; _textField .keyboardType = UIKeyboardTypeASCIICapable; _textField .keyboardType = UIKeyboardTypeDecimalPad; _textField .keyboardType = UIKeyboardTypeDefault; _textField .keyboardType = UIKeyboardTypeEmailAddress; _textField .keyboardType = UIKeyboardTypeNamePhonePad; _textField .keyboardType = UIKeyboardTypeNumberPad; _textField .keyboardType = UIKeyboardTypeNumbersAndPunctuation; _textField .keyboardType = UIKeyboardTypePhonePad; _textField .keyboardType = UIKeyboardTypeTwitter; _textField .keyboardType = UIKeyboardTypeURL; _textField .keyboardType = UIKeyboardTypeWebSearch;