首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖addTarget方法

覆盖addTarget方法
EN

Stack Overflow用户
提问于 2012-08-18 09:21:18
回答 1查看 636关注 0票数 1

我已经子类UIControl,并希望重写sendAction: to :forEvent方法,以便我可以发送自己的自定义UIEvent (以便保留UIControlEvents变量)。但是,由于我所要处理的只是一个UIEvent,所以不能保留UIControlEvents变量。

因此,我认为我需要重写addTarget方法,以便保留UIControlEvents变量。

主要问题:

那么,有谁知道如何实现addTarget方法以保留它应该具有的功能而不覆盖它呢?此外,有没有人知道更好的解决方案,因为苹果默认不会提供这个信息(通过UIControlEvents对象提供UIEvent变量)。

EN

回答 1

Stack Overflow用户

发布于 2012-08-18 12:16:29

在您的子类中提供您自己的addTarget方法,但不要调用超级。保存目标和选项,并使自己成为该选项的目标。当操作方法被发送给您的事件时,您可以采取任何您想要的操作。

编辑:因此,您有一个子类,并希望保存添加的目标等。声明一个可变数组。当你收到这条信息:

代码语言:javascript
复制
- (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的目标,方法是在数组中插入并找到每个希望了解此类事件的对象。

然后,您的子类将决定任何收到通知的事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12017423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档