Ios UIPresentationController传递触摸事件

Ios UIPresentationController传递触摸事件,ios,swift,cocoa-touch,Ios,Swift,Cocoa Touch,我试图做一个自定义的通知视图,从底部向上滑动到某个高度。我使用的是ui呈现控制器,但问题是当呈现第二个VC时,显示VC的视图控制器上的触摸事件未被检测到,有没有办法做到这一点 如果要访问现有的ViewController对象,必须先关闭当前控制器。您可以通过向notificationController添加一个UITapGestureRecognitizer来完成此操作,并使用该事件取消通知 另一种可能的方法是将通知实现为UIView而不是UIViewController,并将其直接显示在vie

我试图做一个自定义的通知视图,从底部向上滑动到某个高度。我使用的是
ui呈现控制器
,但问题是当呈现第二个VC时,显示VC的
视图控制器
上的触摸事件未被检测到,有没有办法做到这一点


如果要访问现有的ViewController对象,必须先关闭当前控制器。您可以通过向notificationController添加一个
UITapGestureRecognitizer
来完成此操作,并使用该事件取消通知


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

好吧,经过一点努力,我得到了答案,发生的情况是,即使你的
frameOfPresentedViewInContainerView
只是屏幕的一小部分,该框架的containerView大小就是整个窗口,所以我只是将containerView的框架更改为与
frameOfPresentedViewInContainerView
相同,现在你可以与两个控制器交互,希望它能帮助别人。以下是一个例子:

    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
    }
}

你写过代码吗?如果是,用现有的解决方案/代码更新您的问题会很酷。我知道您的意思,我曾经将这些类型的警报创建为UIView,但问题是,我想通过app中的所有ViewController使用该警报创建一个类,如
AlertFactory
,该类实例化通知,并为任何ViewController提供创建和显示通知的可能性。如果您的所有ViewController都以相同的方式显示通知,您可以创建一个UIViewController扩展来实现该功能,并且可以从任何VCI访问该扩展。此解决方案是一个救生圈。通过阅读此答案,我可以理解通过触摸事件传递的概念。非常感谢。