我的应用程序有一个表格视图(当然还有滚动),这个视图可以通过手势识别器(就像Facebook应用程序一样)打开和关闭。
如果我使用按钮将[表格视图滑动到屏幕],它可以正常工作,但当我使用手势识别器时,表格视图不能再滚动。
以下是带有问题的手势识别器代码:
[self.view addGestureRecognizer:self.slidingViewController.panGesture];
有人有想法吗?
答案 0 :(得分:43)
您的手势可能会阻止滚动视图手势起作用,因为默认情况下,一次只能识别1个手势。尝试添加自己作为手势的代表并实施:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
self.slidingViewController.panGesture.delegate = self;
另外,将<UIGestureRecognizerDelegate>
添加到您实施的协议列表
答案 1 :(得分:10)
这是swift版本:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
答案 2 :(得分:10)
我在UItableview中使用了UIPangesture,并避免在代理下面使用过这种手势,
//This method helped me stopped up/down pangesture of UITableviewCell and allow only vertical scroll
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer {
let translation = panGestureRecognizer.translationInView(superview)
if fabs(translation.x) > fabs(translation.y) {
return true
}
return false
}
return false
}
答案 3 :(得分:4)
我有同样的问题,在桌面视图上定义长按手势,而且当我长按它时无法滚动桌面。
修正:
1-添加
UIGestureRecognizerDelegate
2-添加
gesture.delegate = self (after you defined the long press gesture)
3-添加此功能:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {return true}
答案 4 :(得分:1)
如果我说得对,那么你要添加手势识别器的视图就是桌面视图。默认情况下,UIScrollView
(以及隐式UITableView
)类使用平移手势识别器进行滚动,并且您的手势识别器会干扰该操作。如果您使用另一个视图作为表视图的容器,并且您要将平移手势识别器添加到它应该可以工作。