我試圖做一個自定義的通知視圖,從一定的高度滑動,我使用的是UIPresentationController,但問題是觸摸事件的ViewController,目前的VC沒有檢測到時提出第二個VC,是否有辦法做到這一點?UIPresentationController傳遞觸摸事件
Here is a visual example of whats happening
我試圖做一個自定義的通知視圖,從一定的高度滑動,我使用的是UIPresentationController,但問題是觸摸事件的ViewController,目前的VC沒有檢測到時提出第二個VC,是否有辦法做到這一點?UIPresentationController傳遞觸摸事件
Here is a visual example of whats happening
好了,經過一番努力,我得到了答案,發生了什麼事,即使您的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
}
}
如果您要訪問的對象presentingViewController你必須先關閉當前控制器。您可以通過將UITapGestureRecognizer
添加到notificationController並關閉該事件的通知。
另一種可能的方法是將您的通知作爲UIView
而不是UIViewController
實現,並將其直接顯示在viewController視圖上,而不是在頂部添加另一個控制器。
我知道你的意思,我曾經創建這些類型的警報作爲UIView,但事情是,我想通過所有的ViewController應用程序 –
創建一個類似於AlertFactory的類來實例化您的通知並向任何ViewController提供創建和顯示它們的可能性。如果所有ViewController都以相同的方式顯示通知,則可以創建一個UIViewController擴展來實現它,並且可以從任何VC訪問它 – jvrmed
你寫過任何代碼嗎?如果是的話,這將是很酷的更新您的問題與您現有的解決方案/代碼 – AlexWoe89