Tengo un teclado personalizado que estoy usando para editar el texto en mytextField
y funciona muy bien. Sin embargo, nunca puedo obtener el delegado shouldChangeCharactersInRange
para ejecutar con mi teclado personalizado. Se ejecuta cuando uso mi teclado real (obviamente no es el teclado predeterminado de iPhone, ya que estoy configurado mytextField.inputView = numberPad.view). ¿Qué debo hacer para que el delegado shouldChangeCharactersInRange
se active con el teclado personalizado? Por cierto, el teclado personalizado es solo un montón de botones.¿Cómo puedo hacer que UITextFieldDelegate.shouldChangeCharactersInRange se active con inputView personalizado?
- (void) numberPadPressed: (UIButton *)sender {
[mytextField insertText:[[NSNumber numberWithInt:sender.tag] stringValue]];
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
NSLog(@"shouldChangeCharactersInRange: %@", resultingString);
return true;
}
- (void)viewDidLoad {
mytextField.text = @"";
mytextField.inputView = numberPad.view;
mytextField.delegate = self;
[mytextField becomeFirstResponder];
}
Acabo de probar utilizando su sugerencia anterior, pero todavía shouldChangeCharactersInRange no se inició cuando se llama numberPadPressed. Creo que estamos en el camino correcto ... – docchang
¿Cómo calcularé el rango? ¿Hay alguna manera de mover el cursor en cualquier posición particular en un TextField? – docchang
Actualicé el ejemplo de código. Utilice [mytextField selectedRange] para obtener el rango seleccionado, que será solo un punto de inserción si no hay selección, o será un rango de caracteres si hay una selección. –