【发布时间】:2012-08-10 11:29:33
【问题描述】:
注意:我已经阅读了一些关于UIScrollView 向子视图发送触摸的问题(包括this,虽然我已经投了赞成票,但它不再像我预期的那样工作了)。
我有什么:我有一个UIScrollView,里面有一个自定义UIView(我们称之为A),里面覆盖了整个UIScrollView。我还可以将其他自定义 UIViews 放在 A 内。
关于我正在执行的代码:
[scrollView setDelaysContentTouches:YES];
scrollView.canCancelContentTouches = NO;
发生了什么: 目前我唯一的问题是,如果我想在 A 内移动子视图,我必须触摸它,等待,然后移动它。正如here所说的那样:
现在,行为会根据 首先触摸 UIView。如果它很短,那么相对拖动 被管理,因为它是 UIScrollView 的滚动。如果长的话 我正在 UIView 中获取 touchesMoved: 事件。
我想要什么: A 中的子视图应该始终获得优先权,我不应该触摸和等待。如果我触摸 A 而不是它的子视图,我希望 UIScrollView 接收触摸,例如平移和移动(contentSize 大于 frame)。
编辑 1.0
我在通用 UIScrollView 中拥有这个 A 视图的唯一原因是因为我希望能够放大/缩小 A 视图.所以我正在做以下事情:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return customView; // this is the A view
}
一开始我在UIScrollView 中没有A 视图,我唯一做的就是将A 添加为我的@987654336 的子视图@root 视图,一切顺利。 如果有其他方法可以启用放大/缩小,我很乐意接受答案。
【问题讨论】:
-
只是快速谷歌搜索,试图覆盖scrollView的
hitTest? herbert-siojo.com/2011/04/01/… -
已经看到这个建议,不起作用。
-
您是否尝试将 UIGestureRecognizer 添加到滚动视图,然后检查触摸是否 locationInView 在自定义 uiview ...
-
A 视图覆盖了整个屏幕。所以总是会返回 A 屏幕。
标签: iphone ios ipad uiview uiscrollview