telefono teclado que numero nombre eliminar dispositivo cómo cuenta cual como cambiar appleid apple iphone objective-c uitextfield

iphone - teclado - cual es el apple id



¿Cómo cambio returnKeyType mientras edito? (8)

¿Cómo puedo cambiar la tecla de retorno en el iPhone mientras se está editando? Se acerca de

myTextField.returnKeyType = UIReturnKeySearch;

Sin embargo, esto solo funciona si llamo [myTextField resignFirstResponder]; entonces [myTextField becomeFirstResponder]; que oculta el teclado y luego lo trae de vuelta. De lo contrario, simplemente permanece como el que tenía antes, en este caso fue "Go". Necesito seguir cambiándolos en función de los caracteres que ingrese el usuario.

En una línea: ¿Cómo cambio el tipo de tecla de retorno del teclado mientras aún se está editando?


¿Intentaste usar el delegado de TextField?

- (BOOL) textFieldShouldBeginEditing: (UITextField *) textField {textField.returnKeyType = UIReturnKeySearch; devuelve SÍ; }


En mi caso lo que funcionó fue el siguiente:

sender.returnKeyType=UIReturnKeyNext; [sender reloadInputViews]; [sender resignFirstResponder]; [sender becomeFirstResponder];

Tuve que forzar el risignFirstResponder seguido de un BecomeFirstResponder.


Hice una categoría personalizada para exponer returnKeyType. Solo importe y haga self.addField.returnKeyType = UIReturnKeySearch; o lo que quieras establecer como returnKeyType. También puedes usarlo dinámicamente cuando el teclado ya está abierto. Se actualizará automáticamente.

Aquí está:

Interfaz:

/* Simple hack for exposing returnKeyType for UISearchBar without private APIs For you from CodeBuffet ;) Enjoy! ~PW */ #import <UIKit/UIKit.h> @interface UISearchBar (ReturnType) @property (nonatomic, readwrite) UIReturnKeyType returnKeyType; @end

Implementación:

#import "UISearchBar+ReturnType.h" @implementation UISearchBar (ReturnType) UITextField *textField; - (UITextField *) traverseForTextViewInViews: (NSArray*) views { // Traverse over all views recursively until we find the tresure TextField hidden deep the UISearchBar ocean! for(UIView *subView in views) { if([subView conformsToProtocol:@protocol(UITextInputTraits)]) { return (UITextField *) subView; } UITextField *tv = [self traverseForTextViewInViews:subView.subviews]; if (tv) { return tv; } } return nil; } #pragma mark Custom Setters & Getters - (void)setReturnKeyType:(UIReturnKeyType)returnKeyType { if (!textField) { textField = [self traverseForTextViewInViews:self.subviews]; } textField.returnKeyType = returnKeyType; [self reloadInputViews]; [textField reloadInputViews]; } - (UIReturnKeyType)returnKeyType { if (!textField) { textField = [self traverseForTextViewInViews:self.subviews]; } return textField.returnKeyType; } @end


Lo encontré hace un tiempo, olvidé publicar aquí. Estoy usando:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange: (NSRange)range replacementString:(NSString *)string { [self performSelector:@selector(addressBarTextDidChange:) withObject:nil afterDelay:0.1]; return YES; } -(void)addressBarTextDidChange:(NSString *)text { NSString *addressText = @"..."; //Wherever you get your text from... if ([addressText isEqualToString:@""]==NO) { if ([addressText rangeOfString:@" "].location != NSNotFound) { //[addressBarTextField setReturnKeyType:UIReturnKeySearch]; if (addressBarTextField.returnKeyType!=UIReturnKeySearch) { [UIView beginAnimations:nil context:NULL]; //Setup the animation. [UIView setAnimationDuration:0.0]; //The duration for the animation. [addressBarTextField resignFirstResponder]; addressBarTextField.returnKeyType = UIReturnKeySearch; [addressBarTextField becomeFirstResponder]; [UIView commitAnimations]; } } else { //[addressBarTextField setReturnKeyType:UIReturnKeyGo]; if (addressBarTextField.returnKeyType!=UIReturnKeyGo) { [UIView beginAnimations:nil context:NULL]; //Setup the animation. [UIView setAnimationDuration:0.0]; //The duration for the animation. [addressBarTextField resignFirstResponder]; addressBarTextField.returnKeyType = UIReturnKeyGo; [addressBarTextField becomeFirstResponder]; [UIView commitAnimations]; } } } else { if (addressBarTextField.returnKeyType!=UIReturnKeyDone) { [UIView beginAnimations:nil context:NULL]; //Setup the animation. [UIView setAnimationDuration:0.0]; //The duration for the animation. [addressBarTextField resignFirstResponder]; addressBarTextField.returnKeyType = UIReturnKeyDone; [addressBarTextField becomeFirstResponder]; [UIView commitAnimations]; } } }

Básicamente, estoy animando el teclado dentro y fuera por una duración de 0.0 segundos (para que el usuario no lo vea). También estoy comprobando si el teclado no es el que quiero antes de cambiar, ya que el cambio constante provoca un retraso.


Lo hice con esas 3 líneas de código:

[sender setReturnKeyType:UIReturnKeyDone]; [sender resignFirstResponder]; [sender becomeFirstResponder];


Necesitaba actualizar el returnKeyType (Siguiente <--> Ir) en función del contenido actual de un campo de texto. El método reloadInputViews en el campo de texto no funcionó después de configurar el returnKeyType, solo. Como han mencionado otros carteles, fue necesario un primer respondedor resign, seguido de un primer respondedor convertido. En mi situación, cuando el campo de texto se convirtió en el primer Contestador y mostraba el teclado, animaba la eliminación y reaparición del teclado. En dispositivos más pequeños o en modo horizontal, también haría que la vista que contiene el campo de texto salte momentáneamente. Una solución que he encontrado para ocultar este comportamiento no deseado es colocar resignFirstResponder y convertirse en FirstResponder en un bloque de animación de 0 segundos de duración.

[UIView animateWithDuration:0.0 delay:0.0 options:0 animations:^{ [textField reloadInputViews]; [textField resignFirstResponder]; [textField becomeFirstResponder]; } completion:nil];


[textField reloadInputViews] parece hacer el truco ...


Swift 3

Después de cambiar returnKeyType de su llamada UITextField o UITextView :

textFieldOrView.resignFirstResponder() textFieldOrView.becomeFirstResponder()

Aunque llamar a textFieldOrView.reloadInputViews() funciona en algunos casos, no es tan seguro como la solución anterior.