UIPresentationController传递触摸事件

Leo*_*uez 1 cocoa-touch ios swift

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

这是发生的事情的直观示例

Leo*_*uez 9

好吧,经过一番努力之后,我得到了答案,发生的事情是,即使您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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案可以拯救生命 (2认同)