5 iphone
UIControl文档明确指出:
当用户以对应于一个或多个指定事件的方式触摸控件时,UIControl会自行发送sendActionsForControlEvents:.
所以我做的很简单.我创建了一个UIControl子类,并覆盖了它,如下所示:
- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents {
[super sendActionsForControlEvents:controlEvents];
NSLog(@"- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents");
}
Run Code Online (Sandbox Code Playgroud)
然后我实例化了我的自定义UIControl,并添加了一个像这样的动作目标:
MyCustomControl *twb = [[MyCustomControl alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 80.0f, 80.0f)];
twb.backgroundColor = [UIColor yellowColor];
[twb addTarget:self action:@selector(anyTouch:) forControlEvents:UIControlEventAllTouchEvents];
[self addSubview:twb];
Run Code Online (Sandbox Code Playgroud)
另外,我为选择器实现了-anyTouch:方法,如下所示:
- (void) anyTouch:(id)sender {
NSLog(@"anyTouch");
}
Run Code Online (Sandbox Code Playgroud)
会发生什么:我触摸该控件的视图,并且当我触摸它时,-anyTouch会抛出"anyTouch"日志消息.但即使我将UIControl子类化并覆盖了sendActionsForControlEvents:,我也没有得到像我应该的那样的日志消息.这是没有意义的.我已经覆盖了它.它应该记录那条消息,该死的.%!§$%
我遇到了同样的问题。我不认为 UIControl 本身使用 sendActionsForControlEvents: 来调度 sendAction:to:forEvent: 。从我看到的一些代码示例中,这个函数是为需要将事件推送到注册目标的外部用户提供的。
| 归档时间: |
|
| 查看次数: |
1218 次 |
| 最近记录: |