2010-05-27 24 views

Trả lời

17
[yourButton addCursorRect:[yourButton bounds] cursor:[theCursorYouWant]]; 
+14

Từ tài liệu của Apple: Phương thức này được dự định chỉ được gọi bằng phương thức resetCursorRects. Nếu được gọi theo bất kỳ cách nào khác, hình chữ nhật con trỏ kết quả sẽ bị loại bỏ vào lần tiếp theo hình chữ nhật con trỏ của khung nhìn được rebuilt_. Vì vậy, bạn phải phân lớp NSButton. – Kentzo

0

Nút thêm trực tiếp con trỏ.

+3

làm thế nào để tôi làm điều đó –

+6

Có phải xuống bỏ phiếu cần thiết? Một tìm kiếm nhanh chóng của tài liệu cho "con trỏ rect" cho bạn biết rất nhiều. –

+1

@JoshuaNozzi có, vì đây không phải là, trong và của chính nó, một câu trả lời hữu ích. –

34

Bạn nên phân lớp NSButton trước, sau đó thêm mã bên dưới.

- (void)resetCursorRects 
{ 
    if (self.cursor) { 
     [self addCursorRect:[self bounds] cursor: self.cursor]; 
    } else { 
     [super resetCursorRects]; 
    } 
} 

Bây giờ bạn có thể đặt con trỏ theo ý muốn.

[self.button setCursor:[NSCursor pointingHandCursor]]; 

Lưu ý: thêm cursor như một thuộc tính của lớp con của bạn, như thế này:

@property (strong) NSCursor *cursor; 
+1

Bạn có thể mở rộng một chút về câu trả lời của mình không. NSButton không có biến đối tượng con trỏ? Tôi không hiểu câu trả lời của bạn. –

+0

Phân lớp và mỗi nút tôi có trong giao diện người dùng chỉ để áp dụng con trỏ lơ lửng dường như không hợp lý. Sau khi nói với bạn, bạn không nên gọi trực tiếp addCursorRect, tài liệu cũng cho bạn biết không bao giờ gọi trực tiếp "resetCursorRects" và chỉ gọi "invalidateCursorRects" là một phương thức của NSWindow. –

+0

@MottiShneor Gọi [super resetCursorRects] trong chính bản thân -resetCursorRects không vi phạm quy tắc "không bao giờ gọi điều này" vì bạn không thực sự gọi nó khi nó được cho là được. –

Các vấn đề liên quan