0

さまざまな理由から、NSOutlineViewDelegate プロトコルを実装するクラスをレスポンダー チェーンに追加しました。

[myOutlineView setNextResponder:self];

これにより、アウトライン ビューのスクロールが停止します。コールアウト - スクロールは正常に機能し、元に戻す - スクロールが停止します。上矢印と下矢印を使用してビュー内で選択を移動すると、スクロールして選択した行が表示されますが、ジェスチャースクロールは何もしません。

デリゲートには、ドラッグ アンド ドロップをサポートするためのかなりの数のメソッドと、コンテキスト メニューをサポートするための ibaction メソッドが含まれていますが、スクロールを妨げるものがそこにあるとは考えられません (ジェスチャー スクロールで macbook air を使用しています)。何が干渉を引き起こしているのか、誰にも何か考えがありますか? または診断する方法はありますか?

デリゲート クラスを NSResponder のサブクラスにしたことを付け加えておきます。

4

1 に答える 1

1

したがって、答えは、デリゲートをレスポンダー チェーンに追加するときに、その場所にあったレスポンダーもデリゲートに追加する必要があるということです。そうしないと、チェーンが壊れてイベントが処理されないため、次のようになります。

    NSResponder *nextResponder = myOutlineView.nextResponder;
    [myOutlineView setNextResponder:self];
    [self setNextResponder:nextResponder];

レスポンダ チェーンが復元されたので、アウトライン ビューが再びスクロールします。万歳

于 2014-08-07T14:25:17.513 に答える