NSScrollView
のをロードまたは表示スワップする方法について、私の同僚が今日私に来てくれました。ボトムアップコーナーの代わりに、左上コーナーに修正してください。文書のスワップ時にNSScrollViewの内容を左下にする代わりに左にする
Appleは、StackOverflowやその他のさまざまな場所でドキュメントを読んでいるにもかかわらず、Webを検索して逃走していましたが、解決策はありませんでした。 Interface Builderで
がプロジェクトにNSScrollView
をドラッグ:
は、ここで問題に部分部分です。 Interface Builderのドラッグでも プロジェクトに2つのカスタムビューと、いくつかのテキストフィールドを追加し、ボタンなど
次IBOutlet
秒でコントローラクラス(例えばmyController)を作成します。
IBOutlet NSScrollView * myScrollView
IBOutlet NSView * myCustomView1
IBOutlet NSView * myCustomView2
にコンセントを接続Interface Builderのコントロール。
@implementation myFlippedView
-(id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
-(void)drawRect:(NSRect)dirtyRect {
// Drawing code here.
}
-(BOOL)isFlipped {
return YES;
}
Interface BuilderでNSScrollView
のdocumentView
を選択し、それをmyFlippedView
のサブクラスを作る:
documentView
が反転する
NSView
サブクラスを作成します。 Interface BuilderでNSScrollViewを選択し、もう一度クリックして
documentView
に移動するか、IBライブラリを変更してツリービューを表示し、
NSScrollView
の子カスタムビューを選択します。
myController
クラススワップで
次のメソッドを持つビュー:
-(void)awakeFromNib {
[myScrollView setDocumentView:myCustomView1];
}
-(IBAction)swapViews:(id)sender {
if ([myScrollView documentView] == myCustomView1) {
[myScrollView setDocumentView:myCustomView2];
} else {
[myScrollView setDocumentView:myCustomView1];
}
}
最後にビルドして実行、アクションswapViews
にプロジェクト内のボタンをフックアップ。
isFlippedで期待されていたように座標が解決されていないという問題があります。
または、単純なルートにして、スワップされたビューをドキュメントビューにするのではなく、myFlippedViewのサブビューにすることができます。 – ughoavgfhw
できます。いい視点ね。 – Hooligancat
しかし、これは新しい問題を導入します。ウィンドウのサイズを変更してスクロールビューをドキュメントビューよりも小さくすると、スクロールビューはウィンドウの上端ではなく下端に固定されます。ユーザーとして、あなたはむしろ後者を期待しています。 –