首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Modal present和dismiss的问题

Modal present和dismiss的问题
EN

Stack Overflow用户
提问于 2018-03-06 23:24:16
回答 1查看 50关注 0票数 0

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

然后,我使用以下代码将其作为Modal打开。

noteDetailController.modalPresentationStyle = .overCurrentContext present(noteDetailController, animated: false, completion: nil)

我的想法是,我将设置一个UITapGestureRecognizer,允许用户点击填充区域中的任何位置来取消Modal

Modal ViewController中,此UITapGestureRecognizer将命中以下代码

self.parentController?.dismiss(animated: false, completion: nil)

我遇到了一些问题,Modal下的ViewController似乎可以响应按下屏幕的操作,并且在加载和关闭Modals时出现了很大的延迟。

这个逻辑看起来是正确的吗,我做事情的方式和你期望的一样吗?看起来好像presentdismiss开始不同步了,加载了几个Modals

耽误您时间,实在对不起。

EN

回答 1

Stack Overflow用户

发布于 2018-03-07 00:32:07

当另一个视图控制器放在它上面时,你下面的视图控制器不应该获得触摸事件。

将模态控制器分割为Kind: Presentation,Presentation: Over Current Context,并将segue调用为performSegue(withIdentifier: "showModal", sender: nil)

  • Make确保模态视图控制器的视图已选中"User Interaction Enabled“,并具有清晰的颜色填充模态视图控制器的容器视图,使用IBOutlet将UITapGestureRecognizer添加到模态视图控制器,并实现UIGestureRecognizerDelegate方法以检测tap确实只在填充中,而不在容器视图本身中:

@IBOutlet弱var containerView: UIView!覆盖函数viewDidLoad() { super.viewDidLoad() let tap = UITapGestureRecognizer(target: self,action:#selector(hide(gr:) tap.delegate = self view.addGestureRecognizer(tap) } func (_ 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(v.isDescendant: true) }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49134327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档