对于OC的嵌套滑动视图一个坑的记录

2019-09-25  本文已影响0人  深海时代

嵌套视图的核心是处理滑动临界条件,协调手势冲突。

临界条件比较麻烦,但是不是技术难点。

手势冲突看这里:https://www.jianshu.com/p/88e2b5694765

我只说一个方法:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

这个方法是处理手势冲突用的:在需要接收上层手势的下层视图打开,下层视图与其点击区域的所有子视图就会同时响应上层的所有手势,若关闭,则手势依然于第一个响应视图处响应而不传递。上层视图不需要做额外处理。otherGestureRecognizer.view表示传入手势的视图,即上层可以响应的对应传入视图,通过对此View的判断来决定是否允许此手势透传。

举个例子,我的tableView1.Sub->scrollView1,scrollView1.sub->tableView2;

我在tableView1打开此方法,所有手势允许透传,tableView1、scrollView1、tableView2会同时响应他们可以响应的手势;

此时在tableView1的此方法处判断响应view为scrollView时返回false,则对应的横向手势无法透传,于是此手势被最上层响应视图吸收,现象即为只允许单向滑动视图。

个人观点,未能系统验证,如有疏漏,感谢指正。

上一篇下一篇

猜你喜欢

热点阅读