2009-03-30 33 views
19

Tôi có một hộp thoại có từ 1 nút trở lên và muốn có thể đặt theo chương trình một nút bên phải là nút mặc định, để khi người dùng nhấn phím Enter hoặc Return, nó sẽ phản hồi như thể người dùng đã nhấp vào nó.Nút mặc định của NSButton với giao diện màu xanh

Tôi đang sử dụng [btn setKeyEquivalent:@"\r"] và điều đó làm cho nó hoạt động tốt nhưng tôi muốn nút có giao diện xanh lam không xảy ra. Tôi cần phải làm gì?

Trả lời

34

Tôi đã bỏ lỡ để đặt kiểu bezel nút phù hợp và đó là lý do tại sao nó không nhìn đúng cách. Bây giờ tôi đang thiết lập các nút như thế này:

[btn setBezelStyle:NSRoundedBezelStyle]; 

Sau đó, bất kỳ những công việc để thiết lập các nút mặc định:

[myWindow setDefaultButtonCell:[btn cell]]; 

hoặc

[btn setKeyEquivalent:@"\r"] 
+0

Chỉ cần ngâm mình với sự phấn khích khi thấy giải pháp này. Không thể tin được rằng tôi đã không nghĩ đến việc buộc một nút là ô nút mặc định và thiết lập chính xác khóa tương đương. Đôi khi bạn * có * để thực hiện việc này, ngay cả khi NSView của bạn có chứa một khóa có phím tắt được đặt để trả lại. Lạ nhưng có thật. Cảm ơn! – Kezzer

+4

Trong Trình tạo giao diện, bạn phải chọn kiểu «Đẩy». Tôi đã trải qua tất cả 15 kiểu giao diện mà Trình tạo dựng cung cấp và chỉ 'Đẩy' phát sáng màu xanh khi được đặt làm ô nút mặc định trong OS X 10.8.3 (Mountain Lion.) Các loại khác sẽ lấy khóa trả về làm khóa tương đương và trở thành mặc định , nhưng chỉ nút 'Nhấn' sáng màu xanh lam khi có. Tôi đã không thử nghiệm ở tất cả các phiên bản khác của OS X - rất có thể là lưu ý này không cần thiết trong Snow Leopard (?) Khi câu hỏi này được hỏi và trả lời trong năm 2009. – ArtOfWarfare

+0

Cảm ơn bạn. Điều này đã giúp tôi :) – Sid

5

Các tài liệu nói:

Lưu ý rằng nếu bạn đặt tương đương với chìa khóa để Return, nút đó trở thành nút mặc định.

Vì vậy, bạn đang thực hiện chính xác. Bạn có thể thử điều này sau khi đặt khóa tương đương:

[button setNeedsDisplay:YES]; 

Điều này buộc nút vẽ lại chính nó.

+0

Hiện nó vẫn hiển thị màu xanh lam dưới Yosemite trở lên? Nó không xuất hiện cho các hộp thoại của tôi - mặc dù khóa tương đương là Return (biểu tượng mũi tên nhỏ bên trái). – Jay

1
[myWindow setDefaultButtonCell:[btn cell]]; // should do the trick. 

Xem Apple's documentation để biết thêm chi tiết.

2

thiết lập của tôi đã được một tờ tùy chỉnh nơi tôi muốn nút mặc định xuất hiện như trong NSAlert. Cấu hình sau đây cho tôi diện mạo mặc định màu xanh. Làm việc trong 10.12.3 Sierra.

button.bezelstyle = NSBezelStyleRounded; // Push in Interface Builder 
    button.keyEquivalent = @"\r"; 
    button.highlighted = YES; // this is the most important part. 
Các vấn đề liên quan