8

大きなスクロール ウィンドウ内に固定サイズの NSTextView が必要です。IB では、テキストビューが実際にはスクロールしないように最小/最大サイズが固定されていても、テキストビューが独自の NSScrollView 内にある必要があります。テキストビュー フレーム内でトラックパッド ジェスチャが行われると (フォーカスがあるかどうかに関係なく)、テキストビューのスクロールビューによってキャプチャされるため、何も起こりません。

テキストビューのスクロールビューに、スクロールイベントをウィンドウのメインスクロールビューに渡すように指示するにはどうすればよいですか? (または、ウィンドウのメイン スクロール ビューに、これらのイベント自体を処理し、子スクロール ビューに渡さないように指示する方法を尋ねる必要があるかもしれません。)

IB 構造は次のようになります。

    • ウィンドウのコンテンツ ビュー
      • ウィンドウの大きなスクロールビュー (スクロール イベントの目的のターゲット)
          • 別のxibのスワップ可能なコンテンツビュー
            • テキストビューのスクロールビュー
              • テキストビュー
そして、はい、テキストビューにフォーカスがない 場合、ウィンドウは正しくスクロールします。

4

5 に答える 5

11

スーパースクロールビューを追跡するためにアウトレット「svActive」を作成する必要はありません。この文をscrollWheelイベントに書き込むだけです。

[[self nextResponder] scrollWheel:event];

これにより、イベントがレスポンダーチェーン内の次のレスポンダーに渡されます。

于 2011-10-17T02:53:14.453 に答える
3

これは本当に恥ずかしいです。何週間も延​​期した後、サブクラス化された NSScrollView を受動的に動作させるための最初の試みを行いました。

サブクラスは次のとおりです。

h ファイル:

#import <Cocoa/Cocoa.h>

@interface ScrollViewPassive : NSScrollView {

// This property is assigned a ref to windowController’s main scrollview.
NSScrollView *svActive; 

}

@property (nonatomic, retain) NSScrollView *svActive;

@end

m ファイル:

#import "ScrollViewPassive.h"

@implementation ScrollViewPassive

@synthesize svActive;

// Pass any gesture scrolling up to the main, active scrollview.
- (void)scrollWheel:(NSEvent *)event {
    [svActive scrollWheel:event];
}

@end

これらのパッシブ スクロールビューのアウトレットを作成する必要はありません。xib がコンテンツとして NSBox に割り当てられた直後に、メイン スクロールビューへの参照を与えます。

    [self.boxDisplayingTextViews setContentView:self.subviewCtllr1.view];
    // A textview's superview's superview is its scrollview:    
    ((ScrollViewPassive *)[[self.subviewCtllr1.textview1 superview] superview]).svActive = self.scrollviewMain;

それでおしまい。魅力のように機能します。

于 2011-06-25T17:39:03.027 に答える
1

これを直接実行しようとすると、IB3 と Xcode4 の両方が競合することがわかりましたが、間接的に実行することもできます。まず、textview を scrollview の外にドラッグし、scrollview を削除します。孤立したテキストビューになってしまいます。これをウィンドウに表示できるように IB を取得する方法はわかりませんが、NIB には表示されます。次に、IBOutlet をアタッチし、実行時addSubview:にフレームを調整して、必要なスクロールビューに移動します。

私の経験では、NIB は良いことですが、私がこれまで扱ってきたすべての複雑な NIB では、コードの最終的な再配置が必要でした。

于 2011-06-10T02:39:25.487 に答える