[英]Passing tap action from one view to another
我有兩個UIView A和B。這兩個視圖都放在另一個視圖上。 假設視圖A放置在視圖B上方。因此,當我點擊視圖A時,它正在消耗所有點擊操作。 但是我不希望僅在視圖A之前消耗該操作。 我想在被點擊的視圖B上執行操作。
我所有的視圖都有userInteractionEnabled = true
class PassthroughView : UIView {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
{
let view = super.hitTest(point, with: event)
return view == self ? nil : view
}
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
print("Tap Called")
return false
}
}
看到一些解決方案后,我嘗試了這些代碼,但似乎沒有用。
此外,視圖A可以使用滑動手勢來工作。
_V_i_e_w_B___
| ____
| |View A
| |
| |
| |
| |
|__|__
|_____
在UIView子類中,僅覆蓋hitTest方法
class PassthroughView : UIView {
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
{
let view = super.hitTest(point, with: event)
return view == self ? nil : view
}
}
並使用子類創建視圖A,並使用UIView類創建另一個視圖B。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let b = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
b.backgroundColor = .gray
b.center = view.center
view.addSubview(b)
let a = PassthroughView(frame: CGRect(x: 0, y: 0, width: 275, height: 275))
a.backgroundColor = .lightGray
a.center = view.center
view.addSubview(a)
}
}
每當將視圖A放置在視圖B上方時,將視圖A的userInteractionEnabled更改為false,您的點擊將被傳遞到視圖B。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.