Por alguna razón, cuando agrego un UITextfield como una subvista de la vista de contenido de una celda de tabla, el botón borrar no se alinea con el texto escrito en el campo, y aparece un poco debajo de él. ¿Hay alguna manera de mover el texto del botón borrar para evitar que esto suceda? Gracias por cualquier ayuda,¿Cómo puedo mover el botón Borrar en un UITextField?
Respuesta
No he visto esto, y una captura de pantalla sería útil. Pero la respuesta rápida es que puede inspeccionar la matriz de subvistas del UITextField, buscar la subvista que contiene el botón borrar y ajustar su frame.origin.
Editar: Parece que he sido votado negativamente por esta respuesta (escrita en 2010). Este no es un método aprobado "oficialmente" porque está manipulando objetos privados, pero no es detectable por Apple. El principal riesgo es que la jerarquía de vistas podría cambiarse en algún momento.
Subclase UITextField y reemplazar este método:
- (CGRect)clearButtonRectForBounds:(CGRect)bounds
{
return CGRectMake(bounds.origin.x - 10, bounds.origin.y, bounds.size.width, bounds.size.height);
}
retorno del CGRect que satisfaga sus necesidades.
Esto no pondrá el botón en el borde derecho. Esto: devolverá CGRectMake (bounds.size.width/2-20, bounds.origin.y-3, bounds.size.width, bounds.size.height); – Luda
He subclase el UITextField
y anulo la función .
.h
#import <UIKit/UIKit.h>
@interface TVUITextFieldWithClearButton : UITextField
@end
.m
#import "TVUITextFieldWithClearButton.h"
@implementation TVUITextFieldWithClearButton
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)awakeFromNib
{
self.clearButtonMode = UITextFieldViewModeWhileEditing;
}
- (CGRect)clearButtonRectForBounds:(CGRect)bounds
{
return CGRectMake(bounds.size.width/2-20 , bounds.origin.y-3, bounds.size.width, bounds.size.height);
}
@end
Parece que ha votado negativamente las otras respuestas. No genial. –
Bajé una de las respuestas. Lo hice porque la respuesta, en mi opinión, es incorrecta. He comentado por qué creo que sí, y estaré encantado de seguir hablándote sobre eso (en el hilo relevante). Lo más importante es entender cómo se hacen las cosas bien y no qué tan genial eres. – Luda
Como se indica por @Luda La forma correcta es a subclase UITextField y anular - (CGRect)clearButtonRectForBounds:(CGRect)bounds
. Sin embargo, los límites pasados al método son los de la vista en sí y no el botón. Por lo tanto, debe llamar al super
para obtener el tamaño proporcionado por el SO (para evitar la distorsión de la imagen) y luego ajustar el origen para que se ajuste a sus necesidades.
p. Ej.
- (CGRect)clearButtonRectForBounds:(CGRect)bounds {
CGRect originalRect = [super clearButtonRectForBounds:bounds];
return CGRectOffset(originalRect, -10, 0); //shift the button 10 points to the left
}
de Apple docs Estado:
Discusión No debe llamar a este método directamente. Si desea coloque el botón borrar en una ubicación diferente, puede anular este método y devolver el nuevo rectángulo. Su método debe llamar a la implementación de super y modificar solo el origen del rectángulo devuelto. Cambiar el tamaño del botón borrar puede causar una distorsión innecesaria de la imagen del botón.
- 1. Agregar el botón "Borrar" a un iPhone UITextField
- 2. ¿Puedo conectar el botón Borrar de UISearchBar?
- 3. Borrar el color del botón en el campo de texto
- 4. La mejor manera de borrar un UITextField
- 5. Ocultando el teclado cuando se presiona el botón borrar en UITextField
- 6. Mover el cursor al comienzo de UITextField
- 7. cómo mover el cursor al siguiente UITextField programáticamente?
- 8. Botón Borrar en UITextView
- 9. Cómo detectar el botón UIKeyboard "backspace" touch en UITextField?
- 10. Mover el botón a Div
- 11. iPhone realiza una acción cuando se presiona el botón borrar UITextField/UISearchBar
- 12. ¿Cómo puedo borrar el archivo log log?
- 13. ¿Cómo puedo limitar el número de decimales en un UITextField?
- 14. Agregar un botón cancelar al teclado UITextField
- 15. ¿Por qué el botón claro no está alineado con el texto en un UITextField?
- 16. UITextField Cómo comprobar si se presiona una tecla de borrar
- 17. habilitando el "botón de retorno" en un teclado UITextField (objetivo-c/iphone)
- 18. ¿Cómo puedo borrar el terminal en Ruby?
- 19. ¿Cómo puedo cambiar el color de un UITExtField clearButton?
- 20. UITextField en un UITableViewCell
- 21. Objetivo-C, ¿Cómo puedo obtener el valor de un UITextField?
- 22. ¿Cómo puedo borrar la notificación en el botón? Haga clic en
- 23. ¿Puedo mover un UIAlertView?
- 24. ¿Puedo deshabilitar el icono Emoji en UITextField?
- 25. ¿Cómo puedo responder a eventos táctiles en un UITextField?
- 26. ¿Cómo puedo detectar un evento KeyPress en UITextField?
- 27. UITextField clearButtonMode color
- 28. Mover texto en un div sin mover el div
- 29. iPhone SDK - UITextField con el botón + para contactos
- 30. El botón claro de UITextfield oculta el teclado cuando está dentro de UIScrollView
Gracias por el consejo, estoy en el camino ahora pero una vez que me detenga, lo probaré y actualizaré. – Jake
Sí, solo voy a mover la subvista. – Jake
No se puede acceder al código de UITextField.m. UITextField debe ser subclasificado – Luda