gpt4 book ai didi

ios - 通过 UIViewController 传递触摸

转载 作者:可可西里 更新时间:2023-11-01 03:32:49 34 4
gpt4 key购买 nike

我有一个 View Controller ,我覆盖在另一个 View Controller 之上。我只需要顶 View Controller ,这样我就可以覆盖一个临时的弹出通知,并且有一个覆盖的 VC 允许我在 UITableViewController 上呈现它,因为你不能直接将 subview 添加到 tableview Controller 。

当底部 View Controller 被另一个 View Controller 覆盖时,是否可以与底部 View Controller 进行交互。如果这是一个 View 或窗口,您可以通过将用户交互设置为 false 或使用 hitTest 来实现此目的,但这两种方法都不适用于 View Controller 。

最佳答案

像这样创建子类

class TouchDelegatingView: UIView {
weak var touchDelegate: UIView? = nil


override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
guard let view = super.hitTest(point, with: event) else {
return nil
}

guard view === self, let point = touchDelegate?.convert(point, from: self) else {
return view
}

return touchDelegate?.hitTest(point, with: event)
}
}

然后在你的 ViewController 中设置 View 类(你可以直接在 xib 中进行,或者在 loadView() 方法中进行)

并添加

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

if let delegatingView = view as? TouchDelegatingView {
delegatingView.touchDelegate = presentingViewController?.view
}
}
}

您还可以使用此机制将触摸委托(delegate)给任何其他 View ,无论是否

关于ios - 通过 UIViewController 传递触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34660095/

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