首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与UITableView的superview上的UIPanGestureRecognizer冲突

与UITableView的superview上的UIPanGestureRecognizer冲突
EN

Stack Overflow用户
提问于 2018-08-26 00:23:22
回答 1查看 371关注 0票数 0

我正在尝试构建一个与iOS上的苹果地图中的抽屉菜单大致类似的东西。

在这个Xcode project中,我在VC的视图上附加了一个UIPanGestureRecognizer,当平移发生时,垂直移动一个禁用滚动的UITableView

问题是每次pan结束后,只有在UITableView上的某个地方发生第二次点击后才会调用didSelectRow方法。当然,我希望在第一次点击之后调用它。

有趣的是,如果我启用了表的滚动,并且在手势识别器的委托中让shouldRecognizeSimultaneouslyWith返回true,就不会发生错误。

另一件有趣的事情是,苹果地图本身似乎也发生了类似的事情,如果你试着把手指放在抽屉里列表中最近的位置条目上,就会把抽屉拉起来。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2018-08-26 11:18:20

我不太明白你在说什么。但我认为主要的问题是“Chain Responder”。当您在响应器链中使用PanGestureRecognizerUITableView属性isScrollEnable = false时,PanGestureRecognizer是第一个被调用的人,系统等待失败或不处理该事件,然后将其传递给响应器链中的下一个响应器,即UITableView。因此,调用didSelectRow函数需要花费太长的时间,我建议您创建一个新的UIView并将其插入到情节提要中的ViewController中,然后将UITableVIew放在该UIView之外,然后将PanGestureRecognizer链接到该新的UIView。通过这种方式,响应器链不会与两者都发生冲突,因为系统可以检测拖拽何时位于新的UIView中,并且仅调用PanGestureRecognizer,而当它位于UITableView中时,将调用didSelectRow

如果不能解决问题,最好考虑写入

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52019149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档