我正在为使用自定义UITableViewCell子类的UITableView进行自定义滑动事件。我在标头中包含了UIGestureRecognizerDelegate
,并将其包含在viewDidLoad:
中
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
swipeLeft.direction = UISwipeGestureRecognizerDirectionLeft;
swipeLeft.numberOfTouchesRequired = 1;
[self.tableView addGestureRecognizer:swipeLeft];
我的swipeLeft方法如下所示:
-(void)didSwipe:(UISwipeGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateEnded)
{
CGPoint swipeLocation = [recognizer locationInView:self.tableView];
NSIndexPath *swipedIndexPath = [self.tableView indexPathForRowAtPoint:swipeLocation];
NSDictionary *clip = [self.clips objectAtIndex:swipedIndexPath.row];
NSLog(@"Swiped!");
}
}
有点工作,但是滑动必须非常精确。几乎不可能精确。
我几乎是通过使用UIPanGestureRecognizer使它工作的,但不幸的是,它与使用全局平移手势识别器(ECSlidingViewController的用户)的全局边抽屉组件配合使用效果不佳。
有没有办法解决?任何帮助将不胜感激,因为我一直在谷歌搜索和浏览SO数小时以寻找解决方案。
最佳答案
正如Kolin Krewinkel在Twitter上所指出的那样,实现这2个委托方法可以解决问题:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return YES;
}
关于ios - UITableView滑动手势需要近乎完美的准确性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15890305/