gpt4 book ai didi

ios - Modal 存在和关闭的问题

转载 作者:行者123 更新时间:2023-11-30 11:42:58 27 4
gpt4 key购买 nike

我有一个 ViewController,它在主要内容的边缘周围有 20 个点的填充。这是透明的清晰颜色。

然后,我使用以下命令将其作为模态打开。

noteDetailController.modalPresentationStyle = .overCurrentContext
存在(noteDetailController,动画:false,完成:nil)

我的想法是设置一个 UITapGestureRecognizer 以允许用户点击填充区域中的任意位置来关闭 Modal

以下内容被 Modal ViewController 内的 UITapGestureRecognizer 命中

self.parentController?.dismiss(动画: false, 完成: nil)

我遇到的问题是,Modal 下的 ViewController 似乎对按下屏幕做出了响应,并且加载和关闭 Modals< 时存在重大滞后

这个逻辑看起来正确吗?我是否按照您期望的方式做事?看起来presentdismiss开始不同步,并且加载了几个Modal

感谢您的宝贵时间。

最佳答案

当另一个 View Controller 放置在其上方时,下面的 View Controller 不应获取触摸事件。

  1. 将模式 Controller 设置为 Kind: Present Modally、Presentation: Over Current Context,并将该 segue 调用为 performSegue(withIdentifier: "showModal", sender: nil)
  2. 确保模态视图 Controller 的 View 已选中“用户交互已启用”并且具有清晰的彩色背景。
  3. 使用 IBOutlet 将模态的容器 View 连接到模态视图 Controller ,将 UITapGestureRecognizer 添加到模态的 View (填充)并实现 UIGestureRecognizerDelegate 方法来检测点击确实仅在填充中而不是在填充中容器 View 本身:

    @IBOutlet weak var containerView: UIView!

    override func viewDidLoad() {
    super.viewDidLoad()

    let tap = UITapGestureRecognizer(target: self, action: #selector(hide(gr:)))
    tap.delegate = self
    view.addGestureRecognizer(tap)
    }

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
    if let v = touch.view, v.isDescendant(of: containerView) {
    return false
    }
    return true
    }

    @objc func hide(gr: UITapGestureRecognizer) {
    dismiss(animated: true)
    }

关于ios - Modal 存在和关闭的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49134327/

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