Tôi có gui dựa trên khung nhìn có chứa trường văn bản cho mỗi mục gui. Khi tôi chọn một mục menu khác, tôi muốn các trường văn bản của tôi thoát khỏi chế độ chỉnh sửa. Tôi không thể tìm thấy anyway để làm điều này trong tài liệu nsTextField. Bất kỳ ý tưởng?Bắt buộc trường văn bản Ca cao để kết thúc chỉnh sửa
Trả lời
Bạn cần phải cho các cửa sổ để loại bỏ tình trạng trả lời đầu tiên từ sự kiểm soát:
[[textField window] makeFirstResponder:nil];
này sẽ kết thúc chỉnh sửa và loại bỏ tập trung từ trường văn bản.
Giải pháp sau đây từ cocoabuilder.com - Stop edit session with a NSTextField hoạt động đối với tôi cả trên OS X 10.9 và OS X 10.10 cho Mục tiêu-C và trên 10.10 cho Swift.
Đây là Objective-C phiên bản:
@implementation CustomTextField
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
self.target = self;
self.action = @selector(action:);
return self;
}
- (void)action:(NSTextField *)textField {
// Make something else first responder, something neutral
// (or can be a fake invisible element)
[self.window makeFirstResponder:self.window.contentView];
// Other code
}
@end
Bối cảnh: chấp nhận giải pháp trong chủ đề này không bao giờ làm việc cho tôi trên OS X 10.9 và 10.10 nên thay vì gọi [[textField window] makeFirstResponder:nil];
vì nó gợi ý - tôi cần phải gọi makeFirstResponder
với một số lớp con NSResponder không phải nil (đây có thể là chế độ xem nội dung của NSWindow hoặc chế độ xem của NSViewController mà cả hai đều hoạt động trong trường hợp của tôi hoặc một số chế độ xem NSTextField giả không hiển thị cho người dùng đối với các trường hợp phức tạp hơn).
Chi tiết quan trọng: -[NSWindow makeFirstResponder]
phải được gọi chính xác trong bộ chọn hành động của NSTextField như ví dụ của tôi minh họa. Không có nơi nào khác trong đường dẫn phương pháp NSTextField đã làm việc cho tôi (textDidEndEditing :, textShouldEndEditing: hoặc control: textShouldEndEditing :)
mặc dù lạ, đây cũng là giải pháp duy nhất làm việc cho tôi. – Christian
thực sự hoạt động trong khi câu trả lời được chấp nhận không, trong Yosemite –
Nếu bạn đã gọi phương thức từ câu trả lời ở trên trong viewWillLayout, bạn sẽ làm mọi thứ trong một hàng mà không tạo bất kỳ lớp con nào. – iSavaDevRU
tôi biết đây là một câu hỏi cũ, nhưng trong trường hợp bất cứ ai thắc mắc về nhanh 3, nó chỉ làm việc cho tôi với
DispatchQueue.main.async{ self.window?.makeFirstResponder() }
Lệnh này nên được sử dụng trong chế độ xemWillLayout và nếu cần trong viewWillAppear và. Và đó là tất cả. Không có lớp con và chủ đề song song.
[textField.window makeFirstResponder:nil];
Điều này làm việc tốt với cửa sổ chính. Nhưng điều này không hoạt động tốt với các cửa sổ phương thức.
Đối với cửa sổ modal sử dụng viewDidAppear hoặc dispatch_async:
dispatch_async(dispatch_get_main_queue(), ^{
[textField.window makeFirstResponder:nil];
});
- 1. Bắt buộc nhập văn bản để bắt đầu bằng văn bản mặc định
- 2. Chỉnh sửa trường văn bản trong Appengine Datastore Viewer
- 3. Ca cao: Cách liên kết thuộc tính boolean với NSCellStateValue?
- 4. Slickgrid - Mất tiêu điểm để kết thúc chỉnh sửa
- 5. Android Chỉnh sửa căn chỉnh văn bản
- 6. Mac OS X: Làm cách nào để ép buộc Trình chỉnh sửa trường thay vì cuộn văn bản?
- 7. Trình chỉnh sửa HTML - chỉnh sửa cả thẻ bắt đầu và thẻ kết thúc cùng một lúc
- 8. ca cao phát mp3
- 9. Chỉnh sửa văn bản PDF bằng Java
- 10. Xác thực trên Chỉnh sửa Văn bản
- 11. Android: Chỉnh sửa nút đi văn bản
- 12. Văn bản căn chỉnh phải trong trường nhập HTML
- 13. cách tập trung chỉnh sửa văn bản
- 14. Cách tiếp cận tốt nhất để chỉnh sửa trường văn bản trong ô xem bảng
- 15. Làm cách nào để tạo DIV có thể chỉnh sửa giống như trường văn bản?
- 16. Chỉnh sửa văn bản mà không tự động sửa
- 17. Trình xác thực trường bắt buộc asp.net cho ít nhất một hộp văn bản chứa văn bản
- 18. Chế độ xem tùy chỉnh ca cao cho NSMenuItem
- 19. Văn bản cao cấp 2: màu của tab tệp đã chỉnh sửa?
- 20. Bộ chọn jQuery mô phỏng: bắt đầu bằng hoặc: kết thúc tìm kiếm văn bản?
- 21. Thông báo trong UIWebView rằng lựa chọn văn bản đã bắt đầu hoặc kết thúc?
- 22. Văn bản cao cấp - Không thể chỉnh sửa cài đặt gói
- 23. Có thể chỉnh sửa để chỉnh sửa liên kết. Giúp
- 24. Android: sử dụng LinkMovementMethod để chỉnh sửa văn bản
- 25. Bàn phím email để chỉnh sửa văn bản
- 26. Có nhiều video Ca cao và Ca cao cảm ứng có giá trị hơn không?
- 27. Di chuyển trọng tâm từ một hộp văn bản Chỉnh sửa sang một hộp văn bản Chỉnh sửa khác
- 28. Chèn văn bản cao cấp Hướng dẫn
- 29. android: cách thay đổi kiểu chỉnh sửa văn bản?
- 30. Disable tự động lấy nét trên chỉnh sửa văn bản
này phải là một câu hỏi thường gặp – uchuugaka
Không làm việc (ít nhất là trong Yosemite). –
Hoạt động tốt ở Yosemite tại đây. Bạn đang gọi từ chủ đề chính? \t 'dispatch_async (dispatch_get_main_queue(),^{[textField.window makeFirstResponder: nil];});' –