嵌套的UIScrollView(在页面上具有pageingEnabled)在页面更改后未收到第一次底部滑动

杜尔甘

我的应用程序结构有点复杂,但遇到了一些小问题:

因此,首先要考虑的是视图层次结构:

|- UICollectionView (horizontal scrolling)
 -> UICollectionViewCell
  |-> UIScrollView A (PagingEnabled = YES, vertical scrolling only)
    |-> UIImageView = page 1
    |-> UIScrollView B (PagingEnabled = NO, vertical scrolling only) = page 2
      |-> UIView (content...)

问题是,当我在UIScrollView A上滚动以显示第2页时,将忽略第一个滚动到UIScrollView B底部的滚动,根本没有滚动,但是第二个滚动具有正确的行为。

我认为这是一种“聚焦”问题,但是我不知道如何使它正常工作。

关于如何使第2页上的第一次触摸正确的UIScrollView有任何线索?

伊斯兰教Q.

你尝试过hitTest:withEvent:方法吗?此方法可帮助您选择应该接受触摸的视图。

例如,您可以继承UIScrollView AUIScrollView并将其设置为刚创建的新类。将以下代码添加到此自定义类中,即可让您将触摸效果传递给它的子视图的第一个UIScrollView

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    for (UIView *subView in self.subviews) {
        // Convert the point to the subView's coordinate system.
        CGPoint pointForTargetView = [subView convertPoint:point fromView:self];

        if (CGRectContainsPoint(subView.bounds, pointForTargetView)) {
            // Calling subView's hitTest:withEvent get the right view
            return [subView hitTest:pointForTargetView withEvent:event];
        }
    }

    UIView *hitView = [super hitTest:point withEvent:event];

//  // Uncomment if you want to make the view 'transparent' to touches:
//  // meaning the parts of the view without any subview will deliver the touch
//  // to the views 'behind' it
//  if (hitView == self) {
//      return nil;
//  }

    return hitView;
}

欲了解更多详细信息,请WWDC -高级Scrollviews和触摸操作技术(下午3点左右是这个问题开始的位置)。

另外,还要感谢蒂姆·阿诺德Tim Arnold)提供的线索。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

延迟后(仅一次)或第一次加载页面上的 iFrame 后滚动到页面顶部

来自分类Dev

页面加载后,第一次没有立即调用Ajax

来自分类Dev

第一次加载页面

来自分类Dev

如何在页面上为 css 选择第一次出现的内部类?

来自分类Dev

Ajax 在第一次提交时不起作用,页面刷新后只有结果才会刷新

来自分类Dev

不想在jqGrid中加载页面后第一次显示排序图标

来自分类Dev

第一次导航后,React Router不会渲染推送的页面

来自分类Dev

第一次加载页面后如何避免警报

来自分类Dev

在同一页面上多次使用 VueJS 组件(它只在第一次工作......)

来自分类Dev

我从链接访问页面时第一次没有执行Javascript

来自分类Dev

第一次后无法更改窗口大小

来自分类Dev

inotify脚本在第一次更改后停止

来自分类Dev

有多个循环而在第一次循环后不更改x值?

来自分类Dev

NG表更改页面在第二次点击(不是第一次点击)上的操作

来自分类Dev

NG表更改页面在第二次点击(不是第一次点击)上的操作

来自分类Dev

会话已设置,但在第一次进入另一个页面后无法正常工作

来自分类Dev

重新加载页面后,Gif无法正常工作。仅在第一次打开窗口时有效

来自分类Dev

第一次运行后,由于页面缓存,os.walk()快得多吗?

来自分类Dev

仅当我向下滚动页面时,可排序的 JQuery 元素在第一次拖动后从光标偏移

来自分类Dev

UIScrollView中的UITableView在滚动后不响应第一次点击

来自分类Dev

第一次单击后,滚动到顶部滚动到底部

来自分类Dev

jQuery Mobile listview详细信息页面数据跟踪仅在第一次时有效

来自分类Dev

jQuery Mobile listview详细信息页面数据跟踪仅在第一次时有效

来自分类Dev

如何在请求后保存变量的值,但在第一次加载时却具有不同的值?

来自分类Dev

谷歌浏览器打印预览不会第一次加载页面

来自分类Dev

在第一次加载页面时未显示VisualElements

来自分类Dev

如何检查用户是否第一次进入我的页面?

来自分类Dev

Activity第一次打开时如何显示ViewPager的具体页面(片段)?

来自分类Dev

当页面第一次在编辑链接上加载时,如何保存值?

Related 相关文章

  1. 1

    延迟后(仅一次)或第一次加载页面上的 iFrame 后滚动到页面顶部

  2. 2

    页面加载后,第一次没有立即调用Ajax

  3. 3

    第一次加载页面

  4. 4

    如何在页面上为 css 选择第一次出现的内部类?

  5. 5

    Ajax 在第一次提交时不起作用,页面刷新后只有结果才会刷新

  6. 6

    不想在jqGrid中加载页面后第一次显示排序图标

  7. 7

    第一次导航后,React Router不会渲染推送的页面

  8. 8

    第一次加载页面后如何避免警报

  9. 9

    在同一页面上多次使用 VueJS 组件(它只在第一次工作......)

  10. 10

    我从链接访问页面时第一次没有执行Javascript

  11. 11

    第一次后无法更改窗口大小

  12. 12

    inotify脚本在第一次更改后停止

  13. 13

    有多个循环而在第一次循环后不更改x值?

  14. 14

    NG表更改页面在第二次点击(不是第一次点击)上的操作

  15. 15

    NG表更改页面在第二次点击(不是第一次点击)上的操作

  16. 16

    会话已设置,但在第一次进入另一个页面后无法正常工作

  17. 17

    重新加载页面后,Gif无法正常工作。仅在第一次打开窗口时有效

  18. 18

    第一次运行后,由于页面缓存,os.walk()快得多吗?

  19. 19

    仅当我向下滚动页面时,可排序的 JQuery 元素在第一次拖动后从光标偏移

  20. 20

    UIScrollView中的UITableView在滚动后不响应第一次点击

  21. 21

    第一次单击后,滚动到顶部滚动到底部

  22. 22

    jQuery Mobile listview详细信息页面数据跟踪仅在第一次时有效

  23. 23

    jQuery Mobile listview详细信息页面数据跟踪仅在第一次时有效

  24. 24

    如何在请求后保存变量的值,但在第一次加载时却具有不同的值?

  25. 25

    谷歌浏览器打印预览不会第一次加载页面

  26. 26

    在第一次加载页面时未显示VisualElements

  27. 27

    如何检查用户是否第一次进入我的页面?

  28. 28

    Activity第一次打开时如何显示ViewPager的具体页面(片段)?

  29. 29

    当页面第一次在编辑链接上加载时,如何保存值?

热门标签

归档