加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 除了双击UITextView之外的前向触摸

发布时间:2020-12-16 07:34:21 所属栏目:百科 来源:网络整理
导读:我有一个UITextView,我有多个UIView. UIView上的任何触摸操作都可以与相应的IBAction相关联.在我的场景中,需要将双击手势与UIView的IBAction相关联,除此之外的任何其他触摸都需要转发到底层的UITextView. 我执行上述场景的代码块 UITextView *textView = [[U
我有一个UITextView,我有多个UIView. UIView上的任何触摸操作都可以与相应的IBAction相关联.在我的场景中,需要将双击手势与UIView的IBAction相关联,除此之外的任何其他触摸都需要转发到底层的UITextView.

我执行上述场景的代码块

UITextView *textView = [[UITextView alloc] init];

UIView *subview = [[UIView alloc] init];

UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapDetected:)];
doubleTap.numberOfTapsRequired = 2;
[subview addGestureRecognizer:doubleTap];

[textView addSubview: subview];

我尝试了以下SO解决方案,

How to ignore touch events and pass them to another subview’s UIControl objects?

使用hitTest我无法捕获UITextView顶部的UIViews中的双击手势

Make UIGestureRecognizer to receive touches started on subviews

转发UITouch设置从touchBegan:withEvent:在UIView中转到UITextView没有给出UITextView的预期默认行为

是否有其他解决方案可用于解决此问题?

提前致谢.

解决方法

这可以通过以下方式完成:

>让UITextView按照How to ignore touch events and pass them to another subview’s UIControl objects?中的建议处理触摸事件>在UIView的hitTest中保存对其发生的视图的引用,以便以后可以使用它>添加自定义双击手势识别器,检查hitTest引用是否为空,表示双击发生在目标视图上并将事件转发到该视图.如果没有,则手势识别器失败.要使手势识别器失败,您需要包含UIKit / UIGestureRecognizerSubclass.h并将state属性设置为UIGestureRecognizerStateFailed>将手势识别器添加到UITextView>扩展UITextView以覆盖gestureRecognizers getter并遍历手势识别器以要求自定义手势失败.这必须在getter中完成,因为手势识别器似乎经常被重置

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读