私はUIPresentationControllerを使用していますが、特定の高さからスライドするカスタム通知ビューを作成しようとしていますが、VCを表示するViewControllerのtouchイベントは検出されません第二のVCが提示されて、それを行うことができる方法はありますか?UIPresentationController touchイベントを渡す
Here is a visual example of whats happening
私はUIPresentationControllerを使用していますが、特定の高さからスライドするカスタム通知ビューを作成しようとしていますが、VCを表示するViewControllerのtouchイベントは検出されません第二のVCが提示されて、それを行うことができる方法はありますか?UIPresentationController touchイベントを渡す
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オブジェクトにアクセスしたい場合は、まず現在のコントローラを却下する必要があります。 notificationControllerにUITapGestureRecognizer
を追加し、そのイベントで通知を閉じることで、これを行うことができます。
もう1つの考えられる方法は、UIViewController
の代わりにUIView
として通知を実装し、別のコントローラを上に追加するのではなく、viewControllerのビューに直接表示することです。
私はあなたが何を意味しているのか知っています。私はUIViewとしてこれらのタイプの警告を作成しましたが、その警告をapp –
あなたのNotificationsをインスタンス化し、どのViewControllerにも作成して表示する可能性を与える 'AlertFactory'のようなクラスを作成します。すべてのViewControllerが同じ方法で通知を表示する場合は、それを実装するUIViewController拡張を作成して、どのVCからでもアクセスできるようにします – jvrmed
あなたはまだコードを書いていませんか?もしあなたが既存のソリューション/コードであなたの質問を更新するのはクールだと思います。 – AlexWoe89