注意: 我已经阅读了一些关于UIScrollView
向子视图发送触摸事件的问题(包括这个问题),尽管我已经表示赞成,但它不再按照我预期的工作。
我的问题: 我有一个包含自定义UIView
(我们称之为A)的UIScrollView
,它覆盖整个UIScrollView
。我还可以在A中放置其他自定义UIViews
。
在代码中,我正在做如下操作:
[scrollView setDelaysContentTouches:YES];
scrollView.canCancelContentTouches = NO;
当前情况:目前我的唯一问题是,如果我想在A中移动一个子视图,我必须触摸它,等待一段时间,然后才能移动它。就像这里所述的那样:
现在,行为取决于对UIView的第一次触摸的“持续时间”。如果很短,则相对拖动将被处理为UIScrollView的滚动。如果持续时间较长,则我将在我的UIView中获得touchesMoved:事件。
我的需求: A内的子视图应始终优先接收,我不希望触摸并等待。如果我触摸A而不是它的子视图,我希望UIScrollView
接收到触摸事件,如平移和移动(contentSize
大于frame
)。
编辑 1.0:
我将A视图放在通用的UIScrollView
中的唯一原因是,我希望能够对A视图进行缩放。因此,我正在执行以下操作:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return customView; // this is the A view
}
一开始我没有将A视图放在UIScrollView
内,我所做的只是将A作为UIViewController
的根视图的子视图添加进去,一切都进行得很顺利。如果有其他方法可以启用缩放功能,我会很乐意接受答案。