キーボードで長い一日を過ごしたので、手を差し伸べています:-)
UIPageViewController
基本的にAppleの標準テンプレートに従う典型的な実装があります。ユーザーがボタンをタッチして特定のページにジャンプしたり、View Controllerを閉じてアプリの別の部分に移動したりできるようにするオーバーレイを追加しようとしています。
私の問題はUIPageViewController
、オーバーレイ サブビューからすべてのイベントがトラップされており、実行可能な解決策を見つけるのに苦労していることです。
例に役立つコードを次に示します...
ビューでDidLoad
// Page creation, pageViewController creation etc....
self.pageViewController.delegate = self;
[self.pageViewController setViewControllers:pagesArray
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:NULL];
self.pageViewController.dataSource = self;
[self addChildViewController:self.pageViewController];
[self.view addSubview:self.pageViewController.view];
// self.overlay being the overlay view
if (!self.overlay)
{
self.overlay = [[MyOverlayClass alloc] init]; // Gets frame etc from class init
[self.view addSubview:self.overlay];
}
これはすべてうまくいきます。オーバーレイが作成され、UIPageViewController
期待どおりにページの上部に表示されます。ページがめくると、オーバーレイの下でめくられます - これもまた、期待どおりです。
ただし、ビューUIButtons
内self.overlay
はタップ イベントを取得しません。はUIPageViewController
すべてのイベントに応答します。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
ここでの提案に従ってオーバーライドを試みましたが、成功しませんでした。
UIPageViewController ジェスチャー認識エンジン
すべてのイベントを手動でトラップして自分で処理しようとしましたが、うまくいきませんでした (正直なところ、うまくいったとしてもちょっとしたハックのように思えます)。
イベントをトラップする方法や、上にオーバーレイを使用するためのより良いアプローチについて提案がある人はいますかUIPageViewController
。
ありとあらゆる助けが大歓迎です!!