我已经子类UIControl,并希望重写sendAction: to :forEvent方法,以便我可以发送自己的自定义UIEvent (以便保留UIControlEvents变量)。但是,由于我所要处理的只是一个UIEvent,所以不能保留UIControlEvents变量。
因此,我认为我需要重写addTarget方法,以便保留UIControlEvents变量。
主要问题:
那么,有谁知道如何实现addTarget方法以保留它应该具有的功能而不覆盖它呢?此外,有没有人知道更好的解决方案,因为苹果默认不会提供这个信息(通过UIControlEvents对象提供UIEvent变量)。
发布于 2012-08-18 12:16:29
在您的子类中提供您自己的addTarget方法,但不要调用超级。保存目标和选项,并使自己成为该选项的目标。当操作方法被发送给您的事件时,您可以采取任何您想要的操作。
编辑:因此,您有一个子类,并希望保存添加的目标等。声明一个可变数组。当你收到这条信息:
- (void)addTarget:(id)target action:(SEL)action forControlEvents(UIControlEvents)controlEvents在子类中添加这个可变字典如下:
[myArray addObject:[@“addObject”:target,@"action“:NSStringFromSelector(action),@"event”:NSValue valueWithBytes:&controlEvents objCType:@encode(controlEvents)];
虽然乍一看,这似乎令人望而生畏,但并不是那么复杂。
现在我们有了每个注册对象,它们都想知道每个可能的控制事件。现在,您的代码可以决定何时或是否通知一个或多个关于任何controlEvent的目标,方法是在数组中插入并找到每个希望了解此类事件的对象。
然后,您的子类将决定任何收到通知的事件。
https://stackoverflow.com/questions/12017423
复制相似问题