我试图做一个自定义的通知视图,从底部滑到一定的高度。我使用的是一个UIPresentationController,但问题是,当第二个VC出现时,ViewController上的触摸事件没有被检测到,有什么方法可以做到吗?
发布于 2017-10-12 15:47:27
嗯,经过一番挣扎,我得到了答案,发生的是,即使你的frameOfPresentedViewInContainerView是屏幕的一小部分,这个框架的大小就是整个窗口,所以我只是改变了容器视图的框架,使其与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
}
}发布于 2017-10-12 14:28:17
如果您想要访问presentingViewController对象,您必须首先取消当前控制器。您可以通过向您的UITapGestureRecognizer中添加一个notificationController来做到这一点,并使用该事件拒绝通知。
另一种可能的方法是将通知实现为UIView而不是UIViewController,并将其直接显示在viewController的视图中,而不是在顶部添加另一个控制器。
https://stackoverflow.com/questions/46711943
复制相似问题