23

私は UIScrollView を持っていて、両方の方向にスクロールできるようにしたい (現在はそうです) が、一度に 1 つずつしかスクロールできません。したがって、たとえば、水平方向にスクロールを開始すると、指を離して垂直方向に移動し始めるまで、垂直方向にはまったく移動しません。どうすればこれを行うことができますか?

4

4 に答える 4

62

directionalLockEnabledプロパティを YES に設定します。アップルのドキュメントから:

このプロパティが NO の場合、スクロールは水平方向と垂直方向の両方で許可されます。このプロパティが YES で、ユーザーが 1 つの一般的な方向 (水平または垂直) にドラッグを開始した場合、スクロール ビューは他の方向へのスクロールを無効にします。ドラッグ方向が斜めの場合、スクロールはロックされず、ユーザーはドラッグが完了するまで任意の方向にドラッグできます。デフォルト値は NO です

于 2012-06-12T17:46:19.940 に答える
2

これを実現する簡単な方法は、このように UIScrollerView デリゲートを設定して実装することdirectionalLockEnabledですYES

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.x != 0 &&
        scrollView.contentOffset.y != 0) {
        scrollView.contentOffset = CGPointMake(0, 0);
    }
}
于 2016-03-25T10:36:30.107 に答える