ios - shouldchangecharactersin - Problemas con la implementación del protocolo<UITextinputDelegate>
textfield delegate swift (1)
UITextInputDelegate
no es un protocolo que implemente; más bien, el sistema crea un objeto que se ajusta a UITextInputDelegate
, y lo asigna como el .inputDelegate
de un Primer Respondedor que se ajusta a UITextInput
.
Los métodos de UITextInputDelegate
son métodos para que su respondedor .inputDelegate
a .inputDelegate
llame a su .inputDelegate
para informarle que ha cambiado su texto o selección a través de medios que no sean entradas de teclado.
Lo que intento implementar es un UITextField
que ve palabras como caracteres. Específicamente, estoy tratando de ver la expresión matemática sin (como un personaje por ejemplo. Pensé resolver este problema implementando mi propio UITextInputDelegate. Sin embargo, las cuatro funciones requeridas de este protocolo nunca se llaman cuando implemento o adopto este protocolo. intenté implementarlo de las siguientes maneras:
UITextField
un UITextField
.
@interface BIDUItextFieldDelegate : UITextField < UITextInputDelegate >
Subclasando un NSObject.
@interface BIDTextfieldInputDelegate : NSObject < UITextInputDelegate >
El archivo .m correspondiente contiene:
@implementation BIDTextfieldInputDelegate
- (void)selectionWillChange:(id <UITextInput>)textInput
{
NSLog(@"sWill");
}
- (void)selectionDidChange:(id <UITextInput>)textInput
{
NSLog(@"sDid");
}
- (void)textWillChange:(id <UITextInput>)textInput
{
NSLog(@"tWill");
}
- (void)textDidChange:(id <UITextInput>)textInput
{
NSLog(@"tDid");
}
Por ejemplo, para el segundo enfoque (a través de la subclasificación de NSObject), hago lo siguiente en el método de inicio (id) en una clase UITextfield personalizada adicional que se muestra dentro de la aplicación:
//textInputDel is an instance of the custom NSObject class that adopts the above UITextInputDelegate protocol
self.textInputDel = [[BIDTextfieldInputDelegate alloc] init];
self.inputDelegate = self.textFieldDel;
¿Alguien sabe lo que estoy haciendo mal, o tiene una mejor solución?