我正在尝试从一个高度滑动到一定高度的自定义通知视图,我正在使用UIPresentationController,但问题是当第二个VC是第二个VC时,未检测到呈现VC的ViewController上的触摸事件介绍,有没有办法能够做到这一点?
答案 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的视图中显示,而不是在顶部添加另一个控制器。