UIPageViewContollerを使用してブックのようなページめくりを作成しています。私の本のページは、iPhone画面の全幅よりも18px狭く、画面の左側に固定されています。私のUIPageViewControllerのビューのフレームは、これらのページのフレームサイズ(width:302、height:460)に設定されます。これは、ブックに複数のページがあり、ページがiBooksアプリのように現在の表示ページの端から始まるように見えるようにするためです。UIPanGestureRecognizerを1つのビューから別のビューで処理するように渡します。
私が抱えている問題は、誰かが画面の右端から、302ピクセルポイントを超えてパンすることによってページをめくると、パンジェスチャがUIPageViewControllerによってキャプチャされず、ページが回転しない場合です。私は多くのユーザーがページをこのように変えようとしているのを見てきましたので、UIデザインを変更せずにこの経験を修正したいと思います。
私は、UIPageViewControllerの外の領域からUIPanGestureを取得してUIPageViewControllerに渡すことができると考えています。私は正常に全体のビューの背景として持っている画像ビューを使用してパンのジェスチャーをキャプチャしましたが、私はページの回転を処理するためにジェスチャーをUIPageViewControllerに渡す方法を把握することはできません。
- (void) viewDidLoad {
...
// Add a swipe gesture recognizer to grab page flip swipes that start from the far right of the screen, past the edge of the book page
self.panGesture = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:nil] autorelease];
[self.panGesture setDelegate:self];
[self.iv_background addGestureRecognizer:self.panGesture];
//enable gesture events on the background image
[self.iv_background setUserInteractionEnabled:YES];
...
}
#pragma mark - UIGestureRecognizer Delegates
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// test if our control subview is on-screen
if (self.pageController.view.superview != nil) {
if (gestureRecognizer == self.panGesture) {
// we touched background of the BookViewController, pass the pan to the UIPageViewController
[self.pageController.view touchesBegan:[NSSet setWithObject:touch] withEvent:UIEventTypeTouches];
return YES; // handle the touch
}
}
return YES; // handle the touch
}
では、あなたがこれを行う方法を見つけました宣言しましたか?私は似たようなことをしています。私はそれに形を持っているMedia Subviewを持っています。私は、サブビューから形状をドラッグし、それをメインキャンバスビュー上にドラッグし続けたいと思います。 – scooter133
まだ解決策はありません。 – chazzwozzer
私はいくつかのAppsを見ました。現在の考え方では、ジェスチャはTopViewでTransparentであり、下部の目的地ビューに渡されます。ジェスチャは座標を上部ビューに変換し、そのビューで実際に何がクリックされたかを判断し、ドラッグイメージを作成して移動します。しかし、この時点でちょうど考え。 – scooter133