我正在使用ECSliding框架开发应用程序。一切顺利,直到我添加UItableViewController
作为topViewController
为止。尝试滚动静态表格视图时遇到错误。我可以确定问题出在哪里,但我不知道如何解决。如果删除以下命令(在viewDidLoad
方法中声明),我的UITableView
开始正常滚动。
[self.view addGestureRecognizer:self.slidingViewController.panGesture];
用于将UITableViewController设置为topViewController的代码
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Driver"];
topViewController
是ECSlidingViewController
的属性我在另一篇文章中发现了另一个类似的问题,但是那家伙正在使用
UINavigationController
作为topViewController
。请让我知道是否有人可以帮我。
谢谢,
马科斯
最佳答案
我看到您已经解决了您的问题,但也评论其他人也在寻找此解决方案,因此,我将提供一些有关此信息。
这里的问题是,当您向UITableView
子类添加平移手势时,它将与当前用于滚动的手势混淆。当您平移时,它不再知道您要做什么,最终可能会出现不一致的行为(或您不希望的行为)。
有两种不同的解决方案可能会根据您的实际需求而起作用:
ONE:
如果您成为UIGestureRecognizerDelegate
,则可以实现该方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return TRUE;
}
这使您可以侦听多个手势。只要确保将手势的代表设置为
self
TWO:
如果您指定希望新手势实现的方向,则可能会停止滚动问题:
UISwipeGestureRecognizer* swipe;
swipe = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeL)] autorelease];
swipe.direction = UISwipeGestureRecognizerDirectionLeft;
[view addGestureRecognizer:swipe];
swipe = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeR)] autorelease];
swipe.direction = UISwipeGestureRecognizerDirectionRight; // default
[view addGestureRecognizer:swipe];
显然,这是使用滑动方式,但可以轻松对其进行修改。这表示您不想担心垂直手势,可以允许表格继续其默认行为。但是,您可能仍然需要在ONE中实现委托方法,以验证它侦听多个手势。