我对其中包含的UIScrollView这是摆在整个表面(1024×768),我简单的故事板的iPad项目的UIViewController。 我创建了3个XIB文件,这是UIViews其上开始我的应用程序加载在viewDidLoad中,并将其添加到UIScrollView的。 每个3个XIB文件只包含一个的UIButton。
这是层次结构:
〜的UIViewController(UIViewControllerClass是类此的UIViewController)
~~的UIScrollView(含有3个相同UIViews)
~~~的UIView(UIViewClass是文件的所有者此XIB文件)
~~~~的UIButton
我想,我的UIViewControllerClass意识到两个:触摸上的UIScrollView组件的任何地方,如果UIScrollView的被触摸,如果UIButton的里面的UIView在UIScrollView的被触摸时,以具有正是按钮被触摸的信息。
我在UIScrollView中制成IBAction为内部UIViewClass触摸上的UIButton内部的UIView和当我设置用户交互启用= YES上的所有元素(的UIViewController,UIView的和的UIScrollView)调用此方法时,它应。
但在这一点上我UIViewControllerClass并不知道里面的触摸发生的UIScrollView上的UIButton。 我做了触摸识别这样的:
UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouch)];
touch.numberOfTouchesRequired = 1;
并把它添加到UIScrollView的组件。 通过这种方式,我能够在UIViewControllerClass上UIScrollView的成分检测触摸事件,但在UIButton的UIView的触摸事件,其任务是里面的UIScrollView不再被调用。
所以,我必须UIViewControllerClass这两个信息:
- 在UIScrollView的部件触摸作出
- 轻触的UIButton在UIView的是里面的UIScrollView(如果该按钮被感动)制成
我想,触摸事件识别器连接到整个UIScrollView的分量不是解决方案,因为它禁用所有触摸事件处理我里面UIViewClass写道。
我认为解决方案是,在某种程度上触及这些都对里面的UIScrollView UIView的部件制成,应派人来UIViewControllerClass,但我没有找到一个方法来做到这一点。
如果有人能帮助我,我会非常感激。 提前致谢。
[编辑#1:郑答案]
点击手势必须设置为NO cancelsTouchesInView选择!
对于以上我的情况下,该行解决一切问题:
touch.cancelsTouchesInView = NO;
非常感谢郑。