ios - 触摸方法未在放置在 UIScrollView 中的 UIView 上调用

标签 ios uiview uiscrollview touches

我有一个自定义 ScrollView ,它是 UIScrollView 的子类。我在我的 viewcontroller nib 文件中添加了一个 ScrollView ,并将其类更改为 CustomScrollView。现在,这个自定义 ScrollView (由 xib 制作)被添加为 self.view 的 subview 。

在这个 ScrollView 中,我有 3 个文本字段和 1 个从 xib 添加的 UIImageView(名为 signImageView)。单击 UIImageView(添加了一个 TapGestureRecogniser)时,自定义 ScrollView 上会添加一个名为 signView 的 UIView。我想让用户在这个 View 上签名,所以我创建了一个类 Signature.m 和 .h,子类 UIView 并实现了 touches 方法(touchesBegan、touchesMoved 和 touchesEnded)并将 signView 初始化为如下:

signView = [[Signature alloc]initWithFrame:signImageView.frame];
    [customScrollView addSubview:signView];

但是当我开始在 signView 上签名时, View 会滚动,因此不会调用 touches 方法。

我尝试在 self.view 上添加 signView 而不是自定义 ScrollView ,但在这种情况下,当我开始滚动时, View 仍然粘在固定位置。 (在这种情况下它的框架保持固定)

最佳答案

尝试将 scrollViewcanCancelContentTouches 设置为 NO 并将 delaysContentTouches 设置为 YES .

编辑:

我看到这里回答了类似的问题 Drag & sweep with Cocoa on iPhone (答案完全一样)。

如果用户点按并按住 signView(大约 0.3-0.5 秒),则 View 的 touchesBegan: 方法将被触发,所有事件从那一刻开始到 signView 直到 touchesEnded: 被调用。

如果用户快速滑动 signView,则 UIScrollView 接管。

由于您已经使用 touchesBegan: 方法实现了 UIView 的子类化,也许您可​​以以某种方式向用户表明您的应用已准备好供他签名('green光'等效)。

您还可以使用 touchesEnded: 关闭此绿灯

如果将 signImageView 添加为 signViewsubView 可能会更好(而不是 customScrollView)并在触发 touchesBegan: 时隐藏它)。您可以在现有代码中添加 signImageView 的同一位置将 signView 添加到 customScrollview

这样你就可以实现那个地方实际上只有一个 subView(为了更好的触摸传递效率。你可以通过 un- 实现 green light 效果在 touchesBegan:/touchesEnded:

中隐藏 signImageView

如果此应用程序行为(0.3-0.5 秒延迟) Not Acceptable ,那么您还需要子类化 UIScrollView。 Vignesh 覆盖 UIScrollViewtouchesShouldBegin: 的方法可能会派上用场。在那里,您可能会检测到触摸是否在 signView 中发生,并立即将其传递给该 View 。

关于ios - 触摸方法未在放置在 UIScrollView 中的 UIView 上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9567599/

相关文章:

ios - 自定义导航栏不是矩形

ios - 如何获取仪器的返回值?

ios - 更改 UIScrollView 上的 View ,以便音乐更改

iPhone iOs 5,根据内容高度动态更改滚动查看器的高度不起作用?

ios - 禁用 UITextView 中的滚动,同时避免弹到顶部和 ios 当前位置文本不可见

iOS Appdelegate 多个第 3 方依赖项初始化会减慢应用程序启动速度

ios - Xcode 5 iPhone 模拟器没有手机形状

ios - 在 2 个 View Controller 上显示 View

ios - 带约束的动画 UIView 框架

ios - 如何将 UIView 从其右上角动画化/旋转 90 度?