我正在尝试构建与iOS上Apple Maps中的抽屉菜单大致相似的内容。
在此Xcode project中,我在VC的视图上附加了UIPanGestureRecognizer
,并且在平移时,垂直移动了UITableView
并禁用了滚动。
问题是,每次平移结束后,didSelectRow
方法仅在UITableView
上某处发生第二次点击后才被调用。当然,我希望在第一次点击后调用它。
有趣的是,如果启用表的滚动功能,则不会发生该错误,并且手势识别器的委托中有shouldRecognizeSimultaneouslyWith
返回了true
。
如果您尝试用手指放在抽屉内列表中最近的位置条目上来拉起抽屉,则其他有趣的事情似乎也发生在Apple Maps本身中。
感谢您的帮助!
答案 0 :(得分:0)
我不太明白你在说什么。
但是我认为主要问题是“链响应程序”。当您在响应者链中使用PanGestureRecognizer
和UITableView
属性isScrollEnable = false
时,PanGestureRecognizer
是第一个被调用的人,系统等待失败或事件为未处理,则将其传递到响应者链中的下一个,即UITableView
。因此,调用didSelectRow
函数花费的时间太长
我建议您创建一个新的UIView
并插入情节提要中的ViewController
并将UITableVIew
放在该UIView
的外面,然后链接{{1} }到新的PanGestureRecognizer
。这样,响应方链就不会与两者冲突,因为系统可以检测到拖动何时位于新的UIView
中,并且仅调用UIView
以及何时位于{{ 1}}将调用PanGestureRecognizer
最佳问候 如果无法解决则写