注:UIScrollView
サブビューへのタッチの送信に関するいくつかの質問をすでに読みました(これには含まれており、賛成票を投じましたが、意図したとおりに機能しなくなりました)。
私が持っているもの:全体をカバーUIScrollView
するカスタム( AUIView
と呼びましょう)を内部に持っています。A の中に他のカスタムを入れることもできます。UIScrollView
UIViews
コードで私はこれをやっています:
[scrollView setDelaysContentTouches:YES];
scrollView.canCancelContentTouches = NO;
何が起こっているか:現時点で私の唯一の問題は、A内でサブビューを移動したい場合は、それに触れて待ってから移動する必要があることです。まさにここに記載されているとおり:
これで、UIView の最初のタッチの「時間の長さ」に応じて動作が変わります。短い場合、相対的なドラッグは UIScrollView のスクロールとして管理されます。長い場合は、UIView 内で touchesMoved: イベントを取得しています。
私が欲しいもの: A内のサブビューは常に優先されるべきであり、触れて待つ必要はありません。サブビューではなくAに触れた場合UIScrollView
、パンや移動などのタッチを に受け取りたい(contentSize
は よりも大きいframe
)。
編集 1.0
このAビューをジェネリック内に持つ唯一の理由は、 AUIScrollView
ビューをズームイン/ズームアウトできるようにしたいからです。だから私は次のことをやっています:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return customView; // this is the A view
}
最初は、内部にAビューがありませんでした。ルート ビューのサブビューとしてAUIScrollView
を追加するだけで、すべてがうまくいきました。ズームイン/ズームアウトを有効にする別の方法があれば、喜んで答えます。UIViewController's