textfielddidchange shouldchangecharactersin delegate ios objective-c delegates uitextinput

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?