Tôi đã có một đồng nghiệp của tôi đến gặp tôi hôm nay với vấn đề làm sao anh ta có thể tải hoặc hoán đổi documentView
của một NSScrollView
. sửa sang góc trên cùng bên trái thay vì góc dưới cùng.Đặt NSScrollView Nội dung ở trên cùng bên trái thay vì dưới cùng bên trái khi hoán đổi tài liệu
Ông đã dành thời gian tìm kiếm trên web và lúng túng và không có giải pháp mặc dù đọc tài liệu tại Apple, trên StackOverflow và nhiều địa điểm khác.
Đây là vấn đề mảnh-by-piece:
Trong Interface Builder kéo một NSScrollView
vào dự án. Cũng trong giao diện Builder kéo hai quan điểm tùy chỉnh vào dự án và thêm một số textfields, các nút, vv
Tạo một lớp điều khiển (ví dụ MyController) với IBOutlet
s sau:
IBOutlet NSScrollView * myScrollView
IBOutlet NSView * myCustomView1
IBOutlet NSView * myCustomView2
Kết nối cửa hàng với điều khiển trong Trình tạo giao diện.
Tạo một NSView
lớp con để lật documentView
:
@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;
}
Chọn documentView
của NSScrollView
trong Interface Builder và làm cho nó một lớp con của myFlippedView
. Trong giao diện Builder bạn sẽ chọn NSScrollView và sau đó bấm vào nó một lần nữa để có được các documentView
, hoặc thay đổi Thư viện IB để hiển thị một cái nhìn cây và chọn xem tùy chỉnh con của NSScrollView
.
Trong hoán đổi lớp myController
quan điểm với các phương pháp sau:
-(void)awakeFromNib {
[myScrollView setDocumentView:myCustomView1];
}
-(IBAction)swapViews:(id)sender {
if ([myScrollView documentView] == myCustomView1) {
[myScrollView setDocumentView:myCustomView2];
} else {
[myScrollView setDocumentView:myCustomView1];
}
}
Cuối cùng treo lên một nút trong dự án của mình vào hành động swapViews
, xây dựng và chạy.
Vấn đề là tọa độ không được giải quyết như mong đợi với isFlipped.
Hoặc bạn có thể đi theo tuyến đường đơn giản hơn và chỉ thực hiện các giao diện hoán đổi một chế độ xem phụ của myFlippedView thay vì đặt chúng ở chế độ xem tài liệu. – ughoavgfhw
Điều đó bạn có thể. Điểm tốt. – Hooligancat
Tuy nhiên, việc này giới thiệu một vấn đề mới. Nếu bạn thực hiện chế độ xem cuộn nhỏ hơn chế độ xem tài liệu bằng cách đổi kích thước cửa sổ, chế độ này sẽ ghim vào cuối chế độ xem thay vì ở trên cùng. Là một người sử dụng bạn thà mong đợi sau này. –