我想要在表格 View 单元格上进行两种交互:正常点击和长按。我使用以下答案来帮助我开始:
问题是,如果我长按一个有效的单元格,该单元格将突出显示为蓝色,并且长按手势不会触发(它认为它只是一个简单的点击)。但是,如果我在一个无效的单元格上开始长按手势,然后将我的手指滑到一个有效的单元格上然后松开,它就可以正常工作。
最佳答案
可能有更好的答案,但这里有一种方法:
首先在表格 View 本身上创建一个长按手势识别器。
UILongPressGestureRecognizer* longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPress:)];
[self.tableView addGestureRecognizer:longPressRecognizer];
然后,用一个可以找到所选行的例程来处理它:
-(void)onLongPress:(UILongPressGestureRecognizer*)pGesture
{
if (pGesture.state == UIGestureRecognizerStateRecognized)
{
//Do something to tell the user!
}
if (pGesture.state == UIGestureRecognizerStateEnded)
{
UITableView* tableView = (UITableView*)self.view;
CGPoint touchPoint = [pGesture locationInView:self.view];
NSIndexPath* row = [tableView indexPathForRowAtPoint:touchPoint];
if (row != nil) {
//Handle the long press on row
}
}
}
我还没有尝试过,但我认为您可以通过让表格 View 上的手势识别器等待长按失败来阻止该行显示选择。
关于objective-c - 在表格 View 单元格上长按手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367898/