¿Hay alguna manera de agregar un botón cancelar al teclado que se muestra para UITextField
? Revisando la Referencia de protocolo UITextInputTraits
, no pude encontrar nada, incluso probando los diferentes tipos de teclado.Agregar un botón cancelar al teclado UITextField
Respuesta
Puede crear una vista de accesorio de entrada que puede mostrar una UIToolBar sobre el teclado y luego agregarle un botón de cancelar. Eche un vistazo al enlace de documentación a continuación para la propiedad inputAccessoryView.
Este es un ejemplo de uno que hice para un TextView. El método Crear Vista de Accesorio se llama desde "textViewDidBeginEditing". Luego crea la vista de accesorios de entrada y en mi caso agrega tres botones y una barra espaciadora.
Espero que ayude.
-(void)textViewDidBeginEditing:(UITextView *)textView {
[self createInputAccessoryView];
[textView setInputAccessoryView:_inputAccessoryView];
self.myTextView = textView; }
-(void)createInputAccessoryView {
_inputAccessoryView = [[UIToolbar alloc] init];
_inputAccessoryView.barStyle = UIBarStyleBlackOpaque;
[_inputAccessoryView sizeToFit];
_inputAccessoryView.frame = CGRectMake(0,_collageView.frame.size.height - 44, _collageView.frame.size.width, 44);
UIBarButtonItem *fontItem = [[UIBarButtonItem alloc] initWithTitle:@"Font"
style:UIBarButtonItemStyleBordered
target:self action:@selector(changeFont:)];
UIBarButtonItem *removeItem = [[UIBarButtonItem alloc] initWithTitle:@"Remove"
style:UIBarButtonItemStyleBordered
target:self action:@selector(removeTextView:)];
//Use this to put space in between your toolbox buttons
UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
target:nil
action:nil];
UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@"Done"
style:UIBarButtonItemStyleDone
target:self action:@selector(dismissKeyBoard:)];
NSArray *items = [NSArray arrayWithObjects:fontItem,removeItem,flexItem,doneItem, nil];
[_inputAccessoryView setItems:items animated:YES];
[_myTextView addSubview:_inputAccessoryView];
}
Andrew, ¿cómo te va? ¡es Dima R!
Por lo que yo sé, no hay una gran manera de hacer lo que estás tratando de hacer. Se puede recoger fácilmente de uno de los construidos en los tipos enumerados here
typedef enum {
UIReturnKeyDefault,
UIReturnKeyGo,
UIReturnKeyGoogle,
UIReturnKeyJoin,
UIReturnKeyNext,
UIReturnKeyRoute,
UIReturnKeySearch,
UIReturnKeySend,
UIReturnKeyYahoo,
UIReturnKeyDone,
UIReturnKeyEmergencyCall,
} UIReturnKeyType;
Lo que podría hacer es o bien añadir una vista en la parte superior del teclado que contiene el botón de cancelación, o tratar de recorrer a través de la jerarquía de vistas y superponer lo que desea en el botón de esa manera (aunque este método no es confiable). Desafortunadamente, esto es algo que Apple aún no ha proporcionado mucha personalización.
edit: En realidad, creo que leí mal su pregunta desde el principio, ya que de todos modos no querría un botón cancelar como el botón de retorno principal. En este caso, la vista de accesorios de entrada es definitivamente el camino a seguir.
Whoa qué retroceso, un placer verte aquí, amigo. Y gracias por la respuesta. Sí, me gustaría darle al usuario un botón de cancelación adicional, en caso de que quiera cancelar la entrada de texto. –
La respuesta de Kevin Horgan es la que desea, es la forma correcta de lograrlo. – Dima
Acabo de caer una UIToolbar
en mi controlador de vista en Interface Builder, entonces:
@property IBOutlet UIToolbar *keyboardAccessory;
-(void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// this is so I can edit it in Interface Builder, but it doesn't show in the view
[keyboardAccessory removeFromSuperview];
}
-(BOOL) textFieldShouldBeginEditing:(UITextField*)textField {
textField.inputAccessoryView = keyboardAccessory;
return YES;
}
-(IBAction) pressedCancelButton {
[self.view endEditing:YES];
}
Voila!
- 1. ¿Cómo agregar el botón Hecho al teclado?
- 2. Comportamiento extraño al animar UITextField
- 3. Agregar el botón "Borrar" a un iPhone UITextField
- 4. JDialog cancelar botón
- 5. UITableViewController y el teclado UITextField
- 6. Agregar etiqueta a UITextField
- 7. Al hacer clic en el botón del teclado clara de UITextField no está desapareciendo texto
- 8. Añadir un botón para ocultar el teclado
- 9. El teclado UITextField no aparece
- 10. habilitando el "botón de retorno" en un teclado UITextField (objetivo-c/iphone)
- 11. iPhone: ¿Es posible ocultar el teclado al tocar UITextField?
- 12. teclado del iPhone, botón Listo y resignFirstResponder
- 13. botón Cancelar en forma
- 14. UIAlertView sin botón Cancelar?
- 15. cómo agregar una acción en la tecla de retorno UITextField?
- 16. Cómo agregar UILongPressGestureRecognizer a un UITextField?
- 17. UITextField no recibe entrada de teclado
- 18. Llamando al teclado en pantalla usando un botón en C#
- 19. ¿Debería un botón cancelar solicitar confirmación?
- 20. Botón de aviso de JavaScript Cancelar botón?
- 21. ¿Cómo abrir el teclado automáticamente en UITextField?
- 22. El botón claro de UITextfield oculta el teclado cuando está dentro de UIScrollView
- 23. El delegado de UISearchBar no responde al botón cancelar
- 24. IAP iOS UIAlertView botón cancelar
- 25. Agregar margen izquierdo a UITextField
- 26. Agregar UITextField en UIView programmatically
- 27. Ocultando el teclado cuando se presiona el botón borrar en UITextField
- 28. Abortar vs. Cancelar Botón: ¿Cuándo uso Abortar, cuando Cancelar?
- 29. UITextField en un UITableViewCell
- 30. iPhone: ¿Se puede descartar el teclado con el botón de liberación de UITextField?
Gracias por esto, aunque si solo estuvieras haciendo un botón cancelar, ¿no pondría un cancel 'UIBarButtonItem' al lado del' UITextField' para lograr lo mismo sin una vista de accesorios? –
Ahora que lo pienso, eso es exactamente lo que haría. Aunque esta es una muy buena respuesta y definitivamente resuelve mi problema, lo marcaré como aceptado entonces. –
@kevinhorgan ¿por qué no asignó self.myTextView a la propiedad de entrada de inmediato? – Camus