UIPresentationController传递触摸事件

时间:2017-10-12 14:16:07

标签: ios swift cocoa-touch

我正在尝试从一个高度滑动到一定高度的自定义通知视图,我正在使用UIPresentationController,但问题是当第二个VC是第二个VC时,未检测到呈现VC的ViewController上的触摸事件介绍,有没有办法能够做到这一点?

Here is a visual example of whats happening

2 个答案:

答案 0 :(得分:7)

好吧,经过一段时间的努力我得到了答案后,发生了什么,即使你的frameOfPresentedViewInContainerView它是屏幕的一小部分,容器视图的那个框架的大小就是整个窗口,所以我只是改变了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
    }
}

答案 1 :(得分:0)

如果要访问presentViewController对象,则必须先关闭当前控制器。您可以通过向notificationController添加UITapGestureRecognizer来解决该事件的通知。

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