2 つのビューの間に提供される分割ビューを使用して、ビューのサイズ変更機能を許可する必要がある iPad アプリを構築しています。分割ビューは、2 つのハーフスクリーン コンテンツ ビューの間の高さ 20 ピクセルのビューです。添付の画像を参照してください。
ユーザーがこの分割ビューを上下にスクロールすると、両方のコンテンツ ビューのサイズが適切に変更されます。デリゲートで以下に示すコードとしてデリゲートを使用して、これを拡張UIView
および実装しました。それは正常に動作します。唯一欠けているのは、分割ビューを直接上下にフリックできないことです。一番上または一番下までドラッグする必要があります。touchMoved
touchesMoved
TouchMoved
ビューのフリックをサポートするために試しUIPanGestureRecognizer
ましたが、スムーズなドラッグが見られません。コードに示すように、親の分割位置を設定すると、両方のコンテンツ ビューのサイズが変更されます。状態で分割位置の変更を処理するときはUIGestureRecognizerStateChanged
、分割ビューをタッチするだけで上または下にフリックします。分割位置の変更を処理UIGestureRecognizerStateEnded
しても同じですが、dividerview のスクロールでコンテンツ ビューのサイズが変更されません。
コンテンツビューのサイズ変更(のようなtouchMoved
)とビューのフリックを使用して、分割ビューのスムーズなスクロールの両方を実現するにはどうすればよいか教えてください。代替アプローチも問題ありません。ありがとう。
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
if (touch) {
CGPoint lastPt = [touch previousLocationInView:self];
CGPoint pt = [touch locationInView:self];
float offset = pt.y - lastPt.y;
self.parentViewController.splitPosition = self.parentViewController.splitPosition + offset;
}
}
- (void)handlePan:(UIPanGestureRecognizer*)recognizer {
CGPoint translation = [recognizer translationInView:recognizer.view];
CGPoint velocity = [recognizer velocityInView:recognizer.view];
if (recognizer.state == UIGestureRecognizerStateBegan) {
} else if (recognizer.state == UIGestureRecognizerStateChanged) {
// If I change split position here, I don't see smooth scrolling dividerview...it directly jumps to the top or bottom!
self.parentViewController.splitPosition = self.parentViewController.splitPosition + translation.y;
} else if (recognizer.state == UIGestureRecognizerStateEnded) {
// If I change split position here, the same thing happens at end and I don't see my divider view moving with my scrolling and resizing my views.
self.parentViewController.splitPosition = self.parentViewController.splitPosition + translation.y;
}
}
初期画面
分割ビューを下方向にスクロールして、トップ ビューのサイズを拡大しました。
トップ ビューはここでは完全に非表示になっていますが、分割ビューを一番上までスクロールする必要があります。分割ビューをフリックして、任意の位置から直接上に移動したい