UIView取消了第一响应者状态

时间:2011-03-02 17:32:06

标签: iphone cocoa-touch uiview first-responder uiresponder

想象一下当您将 UITableView 放入 UIScrollView 时的情况。 如果您点按表格视图并开始垂直移动 - UITableView 成为第一响应者并将垂直滚动。但是,如果您将水平移动手指 - UIScrollView 成为第一响应者并将水平滚动。

我有类似的情况,但我没有UIScrollView,而是有简单的UIView对象拦截 - (void)touchesMoved:事件并进行移动(有点自制的ScrollView)。

但是我怎么能做 UIScrollView 做的同样的技巧 - 从 UITableView 确定水平移动和从第一响应者状态中取走 ???

提前致谢!!!

2 个答案:

答案 0 :(得分:0)

您可以尝试在视图中覆盖canBecomeFirstResponder并在适当的时间返回适当的值。

答案 1 :(得分:0)

您是否尝试在视图上抛出UIPanGestureRecodnizer。然后,您应该能够设置一个@selector,以便您处理相关事件。同样使用平移,您可以选择仅更改x元素并保留y元素。更进一步,将pan元素附加到视图中,您不必担心有第一响应者。如果您有加速和/或减速,泛元素可以在很多时候用作滑动元素。除此之外,我会说你也可以左右添加一个UISwipeGestureRecognizer元素,但我认为你不会得到诸如用户滑动意义的信息,如果你希望屏幕在用户没有达到足够远的程度时快速恢复右边或左边那你就没有那个选择。此外,如果你做一些额外的编码,滑动将不会提供与UIScrollView相同的效果,但UIPanGestureRecognizer可以。额外的编码将是观察x值的位置,然后使用一点点动画使视图在用户放开视图时向右或向左捕捉。除此之外,如果正确设置x,视图应该并且将跟随手指。