gpt4 book ai didi

ios - 使兄弟 View 忽略任何触摸输入,另一个兄弟 View 应该接收它

转载 作者:行者123 更新时间:2023-11-28 23:21:12 25 4
gpt4 key购买 nike

我开发了一个类似于默认 iOS 日历应用 Day View(议程)的日历库。

日历显示的事件是 UIView 的子类.这些事件可以被点击、长按或可以处理其他基于手势的用户交互。

有时 CurrentTimeIndicator这也是一个组合 UIView子类可以与 Event 重叠.

两者,EventCurrentTimeIndicator共享一个共同的 super View ,TimelineView .

放在一起,它们看起来像这样:

timeline view

当没有CurrentTimeIndicator时在 Event 之上,一切正常,我可以通过点击 View 来触发用户交互事件。但是,当 CurrentTimeIndicatorEvent 重叠, 指标接收到的触摸事件将被忽略并且不会传递给底层 Event查看。

目标是排除CurrentTimeIndicator完全来自响应者链,但让 Event处理任何触摸事件,即使被 CurrentTimeIndicator 遮挡.

查看层次结构: view hierarchy

指示器和事件都是兄弟 View 。在突出显示的触摸区域中点击事件时,触摸未传递。

到目前为止,我已经尝试使用 userInteractionEnabled = true / false 进行试验, 重写 hitTest:withEvent:方法。

解决该问题的其他方法是什么?

代码引用:

Event View - creating gesture recognizers Timeline - layout current time indicator Current Time Indicator - code

从概念上讲,我正在寻找类似于 zPosition 的东西CALayer 的属性(property), 但对于触摸输入。

最佳答案

覆盖 CurrentTimeIndicator View 中的 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 - 使兄弟 View 忽略任何触摸输入,另一个兄弟 View 应该接收它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59633417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com