使兄弟视图忽略任何触摸输入,另一个兄弟视图应该接收它
Make sibling view ignore any touch input, the other sibling view should receive it
我开发了一个类似于默认 iOS 日历应用程序日视图(议程)的日历库。
日历显示的事件是 UIView
的子类。这些事件可以被点击、长按或可以处理其他基于手势的用户交互。
有时也是组合 UIView
子类的 CurrentTimeIndicator
可能与 Event
.
重叠
Event
和 CurrentTimeIndicator
共享一个共同的超级视图,TimelineView
。
加在一起,它们看起来像这样:
当 Event
之上没有 CurrentTimeIndicator
时,一切正常,我可以通过点击视图来触发用户交互事件。但是,当 CurrentTimeIndicator
与 Event
重叠时,指示器接收到的触摸事件将被忽略,不会传递到基础 Event
视图。
目标是将 CurrentTimeIndicator
从响应链中完全排除,但让 Event
处理任何触摸事件,即使被 CurrentTimeIndicator
遮挡。
查看层次结构:
指标和事件都是兄弟视图。当点击高亮触摸区中的事件时,触摸没有传递。
到目前为止,我已经尝试使用 userInteractionEnabled = true / false
覆盖 hitTest:withEvent: 方法。
解决此问题的其他方法是什么?
代码参考:
Event View - creating gesture recognizers
Timeline - layout current time indicator
Current Time Indicator - code
从概念上讲,我正在寻找类似于 CALayer
的 zPosition 属性 的东西,但用于触摸输入。
覆盖 CurrentTimeIndicator 视图中的 pointInside
方法:
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
print("Passing all touches to the next view (if any), in the view stack.")
return false
}
如此处回答:iOS - forward all touches through a view
我开发了一个类似于默认 iOS 日历应用程序日视图(议程)的日历库。
日历显示的事件是 UIView
的子类。这些事件可以被点击、长按或可以处理其他基于手势的用户交互。
有时也是组合 UIView
子类的 CurrentTimeIndicator
可能与 Event
.
Event
和 CurrentTimeIndicator
共享一个共同的超级视图,TimelineView
。
加在一起,它们看起来像这样:
当 Event
之上没有 CurrentTimeIndicator
时,一切正常,我可以通过点击视图来触发用户交互事件。但是,当 CurrentTimeIndicator
与 Event
重叠时,指示器接收到的触摸事件将被忽略,不会传递到基础 Event
视图。
目标是将 CurrentTimeIndicator
从响应链中完全排除,但让 Event
处理任何触摸事件,即使被 CurrentTimeIndicator
遮挡。
查看层次结构:
指标和事件都是兄弟视图。当点击高亮触摸区中的事件时,触摸没有传递。
到目前为止,我已经尝试使用 userInteractionEnabled = true / false
覆盖 hitTest:withEvent: 方法。
解决此问题的其他方法是什么?
代码参考:
Event View - creating gesture recognizers Timeline - layout current time indicator Current Time Indicator - code
从概念上讲,我正在寻找类似于 CALayer
的 zPosition 属性 的东西,但用于触摸输入。
覆盖 CurrentTimeIndicator 视图中的 pointInside
方法:
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
print("Passing all touches to the next view (if any), in the view stack.")
return false
}
如此处回答:iOS - forward all touches through a view