如何在UITableViewController类中使用touchesBegan: withEvent:
方法?
UITableViewController是UIViewController类的子类。那么,为什么该方法在UITableViewController中不起作用呢?
发布于 2012-01-09 18:06:07
touchesBegan除了是一种UIView方法之外,还是一种UIViewController方法。
要覆盖它,您需要子类化UIView或UITableView,而不是控制器。
发布于 2013-02-20 07:47:34
我遇到了类似的问题,并且发现了一种不涉及UITableView子类化的不同方法。另一种方法是将手势识别器添加到UITableViewController的视图中。
我把这段代码放在UITableViewController的viewDidLoad中:
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[self.view addGestureRecognizer:tap];
并实现了事件处理程序:
- (void)handleTap:(UITapGestureRecognizer *)recognizer
{
// your code goes here...
}
我知道这个解决方案不使用touchesBegan,但我发现它是解决同样问题的一个简单的解决方案。
发布于 2013-11-15 22:51:29
这是一个适用于我的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];
}
https://stackoverflow.com/questions/8785184
复制相似问题