2012-06-07 19 views
6

Trong CSS, bạn có thể thay đổi hiệu quả của việc tập trung vào một cái gì đó sử dụng:Làm thế nào để thay đổi hiệu quả của việc tập trung vào một NSTextField trên OSX

.myelement:focus { ... } 

Trong thời gian ở Cocoa, các trường văn bản luôn luôn có một ánh sáng màu xanh xấu xí. Làm thế nào để thay đổi hiệu ứng của việc tập trung vào một NSTextField (hoặc không có nó làm bất cứ điều gì cả)?

Trả lời

12

Các ca cao tương đương với lệnh trên sẽ là:

[[textField window] makeFirstResponder:textField]; 

Như để thay đổi sự xuất hiện, các người hỏi làm thế nào để thay đổi nó cho tất cả các điều khiển trong tất cả các ứng dụng ("toàn cầu") hoặc chỉ cho một văn bản trường trong ứng dụng của riêng bạn? Không có API cho một thay đổi toàn cầu, do đó, hệ thống hacks là đại lộ duy nhất của bạn. Chúc may mắn.

Đối với điều khiển bạn sở hữu (những người thuộc về ứng dụng của riêng bạn), bạn có thể thiết lập các loại vòng lấy nét trong Interface Builder hoặc theo mã trong thời gian chạy như thế này:

[textField setFocusRingType:NSFocusRingTypeNone]; 
// (or NSFocusRingTypeDefault or NSFocusRingTypeExterior) 
+0

Tôi không nhìn thấy nơi người ta có thể đặt 'NSFocusRingTypeNone' trong Trình tạo giao diện. Khác hơn thế, câu trả lời của bạn đã giúp tôi. –

+1

@AdamJohns Trong bảng Thuộc tính, phần cuối cùng có tiêu đề "Chế độ xem". Điều khiển cài đặt vòng lấy nét là nút bật lên. Chọn "Không". –

+0

Tôi nhận thấy điều này dường như không hoạt động đối với 'NSSecureTextField'. Bạn có gặp phải vấn đề đó không? –

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