2011-03-02 74 views
1

想象一下当你有UITableView置入UIScrollView的情况。 如果点击上表视图,并开始垂直移动 - 的UITableView成为第一个响应者,将垂直滚动。但是,如果你将水平移动手指 - UIScrollView成为第一响应者,并将水平滚动。UIView带走第一响应者状态

我也有类似的情况,但不是我的UIScrollView有简单的UIView对象,拦截 - (无效)touchesMoved:事件,使移动(有点自制的滚动型)。

但我怎么可以做同样的伎俩,的UIScrollView做 - 确定水平移动和采取从的UITableView离开第一个响应状态 ???

在此先感谢!

+0

它可能不是UIScrollView的“带走”第一响应者从UITableView中。相反,这可能是UITableView对滑动不感兴趣并将其“传递”给响应者链的诀窍。你为什么不尝试在表格中启用滑动删除操作,并在这种情况下查看是否有水平滚动。 – Bogatyr 2011-03-02 18:08:11

+0

好吧,我明白这个想法,明天就试试看,然后写回来。谢谢 – Dmitry 2011-03-02 21:14:50

+0

nope。在删除表后,第一个响应者状态丢失了某处,我想。无论如何,UIView在UITableView移除后不会获得第一个响应者状态。有任何想法吗??? – Dmitry 2011-03-03 11:01:44

回答

0

你可以尝试在您看来覆盖canBecomeFirstResponder并在适当的时候返回相应的值。

+0

什么时候会调用这些方法?我只是试图把它放在我的UIView(自制滚动视图),它不是在所有叫.. – Dmitry 2011-03-02 17:46:44

+0

也,据我所知,canBecomeFirstResponder应一次开始叫,但我需要一个时间来确定水平或垂直移动 – Dmitry 2011-03-02 17:47:39

0

您是否尝试过在视图上扔UIPanGestureRecodnizer。然后,您应该能够设置一个@选择器,它将允许您处理相关事件。此外,您可以选择仅更改x元素并单独保留y元素。更进一步,将泛元素附加到视图上,您​​不必担心有第一响应者。如果您有加速和减速,泛元素可以将很多时间用作滑动元素。除此之外,我想说,你还可以添加留下了UISwipeGestureRecognizer元素和正确的,但我不认为你得到的信息,如多远用户刷卡的意思,如果你想在屏幕上弹回,当用户还没有使它远远不够,那么你就没有这个选择。另外,如果你做了一些额外的编码,刷卡不会产生与UIScrollView相同的效果,但UIPanGestureRecognizer可以。额外的编码将观察x值的位置,然后在用户放开视图时使用视图的一点点动画捕捉到右侧或左侧。除此之外,如果您正确设置了x,则该视图应当并且将遵循手指。