3

私はBoardsというクラスを持っていて、それはのサブクラスですUIView。そのインスタンスを割り当てて、に入れます。UIScrollView彼がに行く代わりに、サブビューに行きたいのですUIScrollViewが、サブビュー:Boards(UIView)、私はしません。からUIScrollViewへのタッチを渡す方法を知っていUIViewます。

PS:手動でcontentOffsetのを変更するUIScrollViewので、のタッチは必要ありませんが、のタッチは必要ありませUIScrollViewUIView

PS:UIViewはtouchesEndedtouchesBeganイベントを受信して​​いますが、受信していませんtouchesMoved

4

4 に答える 4

2

UIScrollViewをプログラムでのみスクロールする場合は、UIScrollViewをサブクラス化し、touchesBegan / Moved / Cancelled/Endedメソッドをオーバーライドする必要があります。それでも、問題が発生する可能性があります。UIScrollViewは、ユーザー入力を無視するようには設計されていません。

可能であれば、UIScrollViewをカスタムビューに置き換える必要があります。を変更する代わりにcontentOffset、ビューのtransformプロパティを変更してコンテンツ内を移動することができます。

または、2つのビュー、および外部ビューと内部ビューをネストすることもできます。ボードビューを内部ビューの内側に配置します。次に、を変更する代わりにcontentOffset、内部ビューのを変更しますframe

アニメーションが重要な場合は、2番目のオプションがアニメーション化されたトランジションを提供し、最初のオプションも提供する可能性があると確信しています。

于 2010-01-15T05:02:39.427 に答える
0

UIScrollViewのサブクラスを作成してみませんか?次に、次のように、サブクラスが受信するすべてのタッチイベントをUIViewに渡します。

@implementation SubclassOfScrollView

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.nextResponder touchesBegan:touches withEvent:event];
}

@end
于 2010-01-15T04:51:46.107 に答える
0

スクロールビューでオフdelaysContentTouchesにしてみてください。これにより、スクロールビュータッチであるかどうかを確認せずに、すべての子タッチが子ビューに直接転送されます

于 2010-01-15T02:00:32.607 に答える
0

ここの問題に関する新しい更新(ZoomScrollView のソース コードへのリンク + UIScrollView の内部に関するいくつかの優れた説明を含む) 。
また、Apple の更新されたScrollViewSuiteの例も確認してください。3番目の例で説明したシナリオがあります。

于 2010-09-03T20:37:51.340 に答える