2012-04-05 33 views
14

Tôi đã tạo NSView tùy chỉnh và đã triển khai phương thức keyDown:. Tuy nhiên, khi tôi bấm phím, phương pháp này không bao giờ được gọi. Tôi có phải đăng ký để nhận những sự kiện đó không? fyi, tôi đang làm một ứng dụng dựa trên tài liệu và có thể xử lý mã này ở bất kỳ đâu (không cần phải ở trong chế độ xem này). Nơi tốt nhất để làm điều này trong một ứng dụng dựa trên tài liệu như vậy mà sự kiện sẽ xảy ra trong suốt toàn bộ ứng dụng là gì?Ca cao: Sự kiện không hoạt động trên NSView không kích hoạt

Trả lời

27

Bạn cần ghi đè -acceptsFirstResponder để trả lại YES.

+0

Tôi có vấn đề tương tự như hỏi (tùy chỉnh NSView trong một ứng dụng dựa trên tài liệu), và acceptsFirstResponder chỉ overrided nhưng keyDown vẫn chưa được kích hoạt. Nếu bạn có bất kỳ lời khuyên nào khác về những gì tôi có thể sẽ mãi mãi biết ơn! – chm

+1

Bạn có lý do để tin rằng chế độ xem của bạn là ứng dụng trả lời đầu tiên của cửa sổ không? Bạn có thể đặt 'initialFirstResponder' trong mã trước khi cửa sổ được sắp xếp trên màn hình hoặc kết nối nó trong IB. Vào những lúc khác, bạn có thể sử dụng '-makeFirstResponder:'. Ngoài ra, hãy chắc chắn rằng cửa sổ của bạn có thể trở thành chìa khóa. –

7

Trong Swift:

class MDView: NSView { 
    override var acceptsFirstResponder: Bool { return true } 
} 
Các vấn đề liên quan