2017-10-12 92 views
0

我試圖做一個自定義的通知視圖,從一定的高度滑動,我使用的是UIPresentationController,但問題是觸摸事件的ViewController,目前的VC沒有檢測到時提出第二個VC,是否有辦法做到這一點?UIPresentationController傳遞觸摸事件

Here is a visual example of whats happening

+0

你寫過任何代碼嗎?如果是的話,這將是很酷的更新您的問題與您現有的解決方案/代碼 – AlexWoe89

回答

1

好了,經過一番努力,我得到了答案,發生了什麼事,即使您的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 
    } 
} 
0

如果您要訪問的對象presentingViewController你必須先關閉當前控制器。您可以通過將UITapGestureRecognizer添加到notificationController並關閉該事件的通知。

另一種可能的方法是將您的通知作爲UIView而不是UIViewController實現,並將其直接顯示在viewController視圖上,而不是在頂部添加另一個控制器。

+0

我知道你的意思,我曾經創建這些類型的警報作爲UIView,但事情是,我想通過所有的ViewController應用程序 –

+0

創建一個類似於AlertFactory的類來實例化您的通知並向任何ViewController提供創建和顯示它們的可能性。如果所有ViewController都以相同的方式顯示通知,則可以創建一個UIViewController擴展來實現它,並且可以從任何VC訪問它 – jvrmed