提要:
UIControl 是基于Target-Action模式的控件的基类
不应该直接使用
继承自UIView
内容:
UIControl可以实现自定义控件,支持 subclass
Apple Doc给extend UIControl的
建议:
1.针对于特定实践,观察or修改(实现想怎么调用就怎么调用),action消息的分发。
2.提供自定义跟踪行为(想让控件有什么样的track行为)
You may want to extend a UIControl
subclass
for either of two reasons:
To observe or modify the dispatch of action messages to targets for particular events
To do this, override sendAction:to:forEvent:
,
evaluate the passed-in selector, target object, or UIControlEvents
bit
mask, and proceed as required.
To provide custom tracking behavior (for example, to change the highlight appearance)
To do this, override one or all of the following methods: beginTrackingWithTouch:withEvent:
, continueTrackingWithTouch:withEvent:
, endTrackingWithTouch:withEvent:
.
实现控件点击3才有消息分发即(方法调用)
- (void)sendAction:(SEL)action to:(id)target forEvent:(UIEvent *)event {
if (touchTime == 3) {
touchTime = 0;
if ([target respondsToSelector:action]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[target performSelector:action];
#pragma clang diagnostic pop
}
}
}
- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"%s", __FUNCTION__);
BOOL isBegin = NO;
if (++touchTime < 3) {
isBegin = NO;
} else {
isBegin = YES;
}
return isBegin;
}
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"%s", __FUNCTION__);
}
原文地址:http://blog.csdn.net/forwardto9/article/details/46287365