2013-02-22 35 views
6

Tôi muốn kiểm tra xem NSButton tùy chỉnh của tôi hiện có ở trạng thái được nhấn hay không (người dùng đang nhấp vào nó) trong phương thức drawRect tùy chỉnh của tôi. Một cái gì đó như thế này:Kiểm tra xem NSButton có nằm trên drawRect

- (void)drawRect:(NSRect)dirtyRect{ 
    if ([self buttonIsInPressedState]) { 
     [[self alternateBGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f]; 
    }else{ 
     [[self BGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f]; 
    } 
    [super drawRect:dirtyRect]; 
} 

Làm cách nào bạn kiểm tra một thứ như thế? Có thể không?

SOLUTION

tôi đã kết thúc kiểm tra mouseDownFlags trên các tế bào nút. Không biết nếu đó là "đúng" cách để làm điều đó, vì vậy hãy cho tôi biết nếu bạn có một gợi ý tốt hơn:

- (void)drawRect:(NSRect)dirtyRect{   
    if ([self.cell mouseDownFlags] == 0) { 
     [[self BGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f]; 
    }else{ 
     [[self alternateBGImage] drawInRect:dirtyRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0f]; 
    } 

    [super drawRect:dirtyRect]; 
} 

Trả lời

2

Tôi đã kết thúc kiểm tra chuộtDownFlags trên ô nút. Không biết nếu đó là "đúng" cách để làm điều đó, vì vậy hãy cho tôi biết nếu bạn có một gợi ý tốt hơn. Giải pháp được cập nhật trong câu hỏi trên.

4

Tôi không nghĩ rằng "drawRect:" là đúng nơi để cố gắng nắm bắt này .

Bạn có thể phân lớp NSButton và sau đó ghi đè mouseDown: hoặc setState: (tìm kiếm "NSOnState", biểu thị nút được chọn hoặc được nhấn vào).

+0

Tôi đã thử self.state, nhưng nó chỉ hoạt động cho thời điểm nút bấm là "Bật" hoặc "Tắt"! Vì vậy, nút là "On", một khi tôi đã nhấn nó xuống và phát hành nó. Tôi muốn kiểm tra xem liệu việc sử dụng có được nhấn xuống không. MouseDown cũng là một lựa chọn, nhưng tôi không thể nhận được mouseUp để làm việc vì một lý do nào đó. –

0
if([pBtn state]==NSOnState){ 
    NSLog(@" button Pressed ") 
}else{ 
    NSLog(@" button not pressed "); 

} 
+0

Tôi đã thử self.state, nhưng nó chỉ hoạt động cho thời tiết nút là "Bật" hoặc "Tắt"! Vì vậy, nút là "On", một khi tôi đã nhấn nó xuống và phát hành nó. Tôi muốn kiểm tra xem liệu việc sử dụng có được nhấn xuống không. –

+0

Bạn có thể sử dụng nút Push, về cơ bản nó là nút chuyển đổi, có lẽ bạn có thể có được những gì bạn muốn đạt được .. – Amitg2k12

+0

Tôi đã thử. Không hoạt động. Tôi đã làm xong ở trên. Hãy cho tôi biết nếu bạn có một giải pháp tốt hơn. –

5

Tôi đã giải quyết vấn đề này bằng cách kiểm tra [self isHighlighted].

+0

Bạn là thiên thần – maxisme

+1

Tôi sắp trở nên rất tức giận với cuộc sống – maxisme

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