Con*_*sed 18 iphone uitableview touchesbegan
如何touchesBegan: withEvent:在UITableViewController类中使用方法?
UITableViewController是UIViewController类的子类.那么为什么该方法在UITableViewController中不起作用?
Ste*_*arp 23
我遇到了类似的问题,并发现了一种不涉及子类化UITableView的不同方法.另一种方法是在UITableViewController的视图中添加手势识别器.
我将此代码放在UITableViewController的viewDidLoad中:
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.view addGestureRecognizer:tap];
Run Code Online (Sandbox Code Playgroud)
并实现了事件处理程序:
- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
// your code goes here...
}
Run Code Online (Sandbox Code Playgroud)
我知道这个解决方案不使用touchesBegan,但我发现它是解决同一问题的简单方法.
除了作为UIViewController方法之外,touchesBegan也是一种UIView方法.
要覆盖它,你需要子类UIView或UITableView而不是控制器.
小智 5
这是一个适合我的UITableView子类解决方案.创建一个UITableView的子类并覆盖hitTest:withEvent:如下所示:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
static UIEvent *e = nil;
if (e != nil && e == event) {
e = nil;
return [super hitTest:point withEvent:event];
}
e = event;
if (event.type == UIEventTypeTouches) {
NSSet *touches = [event touchesForView:self];
UITouch *touch = [touches anyObject];
if (touch.phase == UITouchPhaseBegan) {
NSLog(@"Touches began");
}
}
return [super hitTest:point withEvent:event];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25196 次 |
| 最近记录: |