我需要能够检测到立即触摸并获得其位置。 (所以doSelectRowAtIndexPath无法帮助我们,因为它在快速上下滚动时不会立即动作,你需要呼吸并逐个选择)
已经尝试过我能想到的一切。在每个单元格中开始的触摸不起作用,因为它在自定义单元格类中实现时突然表现得像didSelectRowIndexPath。与TableViewController相同的结果,触摸的性质开始(你触摸它,立即响应)只是赢了工作。
*我没有尝试过TAP。需要能够获得触摸(TapGesture在非常小心地/缓慢地滑动时没有响应但是触摸开始总是这样做)*
答案 0 :(得分:0)
不确定这是您需要的,但您可以创建TapGestureRecognizer
。
您可能会遇到与UITableView自己的手势识别器的冲突,但有一些机制可以解决这些问题,希望能让您实现所需的行为(查找requireGestureRecognizerToFail
和UIGestureRecognizerDelegate
的{{{ 1}}和gestureRecognizerShouldBegin
)。
答案 1 :(得分:0)
试试这个。
在cellForIndexpath方法中。
UITapGestureRecognizer *singleFingerTap =
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSingleTap:)];
singleFingerTap.delegate=self;
cell.contentView.tag=indexPath.row;
[cell.contentView addGestureRecognizer:singleFingerTap];
//The event handling method
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
NSLog(@"%ld",(long)recognizer.view.tag);
}
答案 2 :(得分:0)
我认为您需要做什么,将UILongPressGestureRecognizer添加到tableview,因此正常触摸将滚动并长按将执行您想要的任何操作。将其minimumPressDuration设置为0.2,这样就不会花费太多时间。为UILongPressGestureRecognizer添加操作,并在该方法中获取如下位置:
CGPoint touchPointInView = [sender locationInView: self.view]; //location reespective to view
CGPoint touchPointInView1 = [sender locationInView: tableView]; //location respective to tableview