UIPageController を使用して、ページ ベースのナビゲーション アプリケーションを実装しています。ページの余白でのみスワイプ ジェスチャを有効にし、内側のコンテンツ ビューからは無効にしたいと考えています。ページには 20 ピクセルの余白があります。
contentView.frame = CGRectInset(self.view.frame, 20, 20);
UIPageController を使用して、ページ ベースのナビゲーション アプリケーションを実装しています。ページの余白でのみスワイプ ジェスチャを有効にし、内側のコンテンツ ビューからは無効にしたいと考えています。ページには 20 ピクセルの余白があります。
contentView.frame = CGRectInset(self.view.frame, 20, 20);
ジェスチャを認識すると、 locationInViewを取得できるはずです。これが許容値である場合は続行し、そうでない場合は続行しません。
最初にクラス インターフェイスを追加します。
@interface MyPageViewController :UIViewController<UIPageViewControllerDelegate, UIGestureRecognizerDelegate>
次にviewDidLoadに追加
for (UIGestureRecognizer *recognizer in self.pageViewController.gestureRecognizers) {
recognizer.delegate = self;
}
次に、 shouldReceiveTouch メソッドを実装します
#pragma mark - UIGestureRecognizer delegate methods
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
CGPoint touchPoint = [touch locationInView:self.pageViewController.view];
CGRect innerRect = CGRectInset(self.pageViewController.view.frame, 40, 40);
if (CGRectContainsPoint(innerRect, touchPoint)) {
return NO;
}
return YES;
}