首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIPresentationController传递触摸事件

UIPresentationController传递触摸事件
EN

Stack Overflow用户
提问于 2017-10-12 14:16:06
回答 2查看 1.6K关注 0票数 3

我试图做一个自定义的通知视图,从底部滑到一定的高度。我使用的是一个UIPresentationController,但问题是,当第二个VC出现时,ViewController上的触摸事件没有被检测到,有什么方法可以做到吗?

下面是一个直观的例子

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-12 15:47:27

嗯,经过一番挣扎,我得到了答案,发生的是,即使你的frameOfPresentedViewInContainerView是屏幕的一小部分,这个框架的大小就是整个窗口,所以我只是改变了容器视图的框架,使其与frameOfPresentedViewInContainerView相同,现在你可以和两个控制器交互,希望它能帮助别人。下面是一个示例:

代码语言:javascript
复制
    class AlertPresentationController: UIPresentationController {

    override var frameOfPresentedViewInContainerView: CGRect {
        guard let container = containerView else {
            fatalError("Error presenting Alert Controller")
        }
        let frameHeight: CGFloat = presentingViewController.view.frame.height * 0.2
        return CGRect(x: 0, y: 0, width: container.frame.width, height: frameHeight)
    }

    override func presentationTransitionWillBegin() {
        containerView?.frame = frameOfPresentedViewInContainerView
    }
}
票数 22
EN

Stack Overflow用户

发布于 2017-10-12 14:28:17

如果您想要访问presentingViewController对象,您必须首先取消当前控制器。您可以通过向您的UITapGestureRecognizer中添加一个notificationController来做到这一点,并使用该事件拒绝通知。

另一种可能的方法是将通知实现为UIView而不是UIViewController,并将其直接显示在viewController的视图中,而不是在顶部添加另一个控制器。

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

https://stackoverflow.com/questions/46711943

复制
相关文章

相似问题

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