Static char operationkey;
+ (Nsstring *) eventname :( uicontrolevents) event
{
Switch (event ){
Case uicontroleventtouchdown: Return @ "uicontroleventtouchdown ";
Case uicontroleventtouchdownrepeat: Return @ "uicontroleventtouchdownrepeat ";
Case uicontroleventtouchdraginside: Return @ "uicontroleventtouchdraginside ";
Case uicontroleventtouchdragoutside: Return @ "uicontroleventtouchdragoutside ";
Case uicontroleventtouchdragenter: Return @ "uicontroleventtouchdragenter ";
Case uicontroleventtouchdragexit: Return @ "uicontroleventtouchdragexit ";
Case uicontroleventtouchupinside: Return @ "uicontroleventtouchupinside ";
Case uicontroleventtouchupoutside: Return @ "uicontroleventtouchupoutside ";
Case uicontroleventtouchcancel: Return @ "uicontroleventtouchcancel ";
Case uicontroleventvaluechanged: Return @ "uicontroleventvaluechanged ";
Case uicontroleventeditingdidbegin: Return @ "uicontroleventeditingdidbegin ";
Case uicontroleventeditingchanged: Return @ "uicontroleventeditingchanged ";
Case uicontroleventeditingdidend: Return @ "uicontroleventeditingdidend ";
Case uicontroleventeditingdidendonexit: Return @ "uicontroleventeditingdidendonexit ";
Case uicontroleventalltouchevents: Return @ "uicontroleventalltouchevents ";
Case uicontroleventalleditingevents: Return @ "uicontroleventalleditingevents ";
Case uicontroleventapplicationreserved: Return @ "uicontroleventapplicationreserved ";
Case uicontroleventsystemreserved: Return @ "uicontroleventsystemreserved ";
Case uicontroleventallevents: Return @ "uicontroleventallevents ";
Default:
Return @ "Description ";
}
Return @ "Description ";
}
-(Void) handlecontrolevent :( uicontrolevents) event withblock :( void (^) (ID sender) block {
Nsstring * methodname = [uicontrol eventname: event];
Nsmutabledictionary * opreations = (nsmutabledictionary *) objc_getassociatedobject (self, & operationkey );
If (opreations = nil)
{
Opreations = [[nsmutabledictionary alloc] init];
Objc_setassociatedobject (self, & operationkey, opreations, objc_association_retain );
}
[Opreations setobject: block forkey: methodname];
[Self addtarget: Self action: nsselectorfromstring (methodname) forcontrolevents: event];
}
-(Void) removehandlerforevent :( uicontrolevents) event
{
Nsstring * methodname = [uicontrol eventname: event];
Nsmutabledictionary * opreations = (nsmutabledictionary *) objc_getassociatedobject (self, & operationkey );
If (opreations = nil)
{
Opreations = [[nsmutabledictionary alloc] init];
Objc_setassociatedobject (self, & operationkey, opreations, objc_association_retain );
}
[Opreations removeobjectforkey: methodname];
[Self removetarget: Self action: nsselectorfromstring (methodname) forcontrolevents: event];
}
Unified management of uicontrol controls