我有一个 View A,其中包含一些自定义 UI 控件。 View A 比它在屏幕上显示的 UI 控件要大。 View A 在 ViewController
A 中,它位于 ViewController
B 之上(VC B 是 VC A 的属性)。
我想告诉我的手势识别器,当用户在 View A 的特定区域内点击时, View A 根本不应该响应触摸事件,而应该由 VC B 内部的 View 使用和处理。
一旦用户在 View A 中的特定区域内触摸,我尝试将 isUserInteractionEnabled
设置为 false,这样触摸事件将由 View A(或 VC A)后面的 View 自动处理。
问题是,一个 isUserInteractionEnabled
设置为 false,我无法再响应 View A 的正确区域中的触摸事件。
是否有更好的方法将触摸事件发送到 View A 后面的 View ,前提是它位于 View A 的特定区域?
最佳答案
您可以重写pointInside
方法使 Controller A 中的 View A 避免处理事件,效果类似于isUserInteractionEnabled
的作用。并且您还将有一种计算特定面积的方法。
例子:
class ViewA: UIView{
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
//assume this area has no response
let areaNoResponses = CGRect(x: 10, y: 10, width: 100, height: 100)
if (areaNoResponses.contains(point)) {
return false; //no response, like ViewA.isUserInteractionEnabled = NO
}
return true;
}
}
关于iOS:如果触摸在特定区域内,则发送触摸事件以查看后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742829/