iOS:如何将触摸事件从子视图转发到超级视图? [复制]

Posted

技术标签:

【中文标题】iOS:如何将触摸事件从子视图转发到超级视图? [复制]【英文标题】:iOS: How to forward touch events from subview to superview? [duplicate] 【发布时间】:2015-08-26 10:56:01 【问题描述】:

我的 iPhone 项目中有以下设置(一个 UIButton,它有一个 UIView 作为子视图):

- UIButton       // super-view   <-------|
  |                                <touch-event>
  |_ UIView      // sub-view     ________|

我已将我的 UIButton 与 IB 的动作(内部修饰)连接到我的视图控制器。但不幸的是,UIView 阻止操作系统调用我的 UIButton 的操作方法,因为 UIView 子视图不响应触摸,因此不会转发到它的超级视图。

如何将动作事件从 UIView 转发到超级视图 UIButton ?这样 UIButton 就“认为”它已经被触摸了,尽管子视图被触摸了。

我已经找到了这些链接,但它们对我没有帮助:

How to send touch events to superview in ios? How to pass the touch event to superview ?

Objective-C 中的一些代码示例会很棒!

【问题讨论】:

试试 self.view.layer.zPosition = 1;可能会有所帮助.... 您的意思是将 UIView 层的 zPosition 设置为 1 ?那没有用。不过感谢您的回复。 请给我带有层级的屏幕,我的意思是 self.button.layer.zPosition = 1; 您到底想通过使用 UIView 作为 UIButton 的子视图来实现什么?在你的 UIView 之上放置一个(半)透明的 UIButton 怎么样? 我目前无法亲自尝试,但您是否尝试过在 UIView 中覆盖 (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 并始终返回 NO 作为答案? 【参考方案1】:

在您的 UIView 中覆盖 (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 并始终返回 NO 应该可以解决问题。

【讨论】:

以上是关于iOS:如何将触摸事件从子视图转发到超级视图? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将点击从子视图转发到父视图?

如何在iOS中将触摸事件发送到superview?

仅将触摸事件转发到被触摸的视图

UIView 事件转发无限循环

从 UIScrollView 转发触摸 - UIButton 问题

在 Cocoa,UIResponder 中将消息从子视图发送到父视图?