use*_*522 7 cocoa-touch menu uitableview swipe ios
为了实现这么简单的事情,我感到绝望.
我有一个菜单的视图,使用touchEvents从左侧滑动时,通过水平滑动进行手势操作.我不使用手势识别器,我只是使用touchesBegan,touchesMoved等.并跟踪起始触摸位置,中间和最终触摸位置之间的x坐标差异.它很棒.
但是,当我在身体中有一个UITableView时,触摸事件不再在层次结构中找到管理菜单的视图.我试图通过将触摸传递给superview/nextResponder来解决这个问题,但是我看到一个touchesBegan和2个touchesMoved调用,然后才停止在层次结构中进一步处理.
具体来说,我有一个SlideMenuView,其中有一个菜单视图和一个正文视图.在身体视图中,我在某些时候有UITableView.我看到(通过NSLog)触摸*方法从头到尾调用就好了.我将它们传递给nextResponder并开始在SlideMenuView中看到它们 - 但是在2次调用touchesMoved后,它们似乎停在SlideMenuView中,但继续在我的UITableView中.
我正在重写UITableView来执行此操作,但我在其中没有更改.
我知道这一定是可能的,因为它在Facebook应用程序中.您可以在身体的任何位置滑动,水平可滚动并显示菜单.我想在这里自然发生同样的事情,但看起来好像发生了一些奇怪的事情,而UITableView正在消耗或破坏事件.
有人可以帮我解决这个问题吗?有人必须以干净的方式实现这一目标.
好的,对于任何感兴趣的人 - 我找到了一个干净的解决方案.
Apple知道他们在做什么.回到过去我们曾经覆盖的那一天touchesBegan
,......但随后他们介绍了GestureRecognizers
.对于某些控件,例如UIScrollView
(和任何子类,例如UITableView
),它们似乎会对它们的事件响应器系统进行屠宰.我假设Gesture Recognizers
没有做任何特别的事情,并且只是勾住这些touchesBegan
,...方法 - 这是不正确的 - 这是不正确的.
最安全的方法是使用Gesture Recognizers
.具体来说,它们有一些选项可以产生重大影响.比如.cancelsTouchesInView = YES
在我的情况下.
所以我做的是PanGestureRecognizer
在菜单视图上使用a ,设置.cancelsTouchesInView
为YES
,并且它可以工作.我将避免touchesBegan
,...像瘟疫一样,并为任何复杂的事情编写自定义手势识别器.
我希望这有助于有人像我一样拔头发!
归档时间: |
|
查看次数: |
2717 次 |
最近记录: |