2012-10-23 18 views
8

Tôi đang cố gắng mô phỏng tính năng tìm kiếm được mã hóa của Mail.app và Finder.app trên 10.7+ nơi có vẻ là một NSSearchField có biểu tượng kính lúp tìm kiếm ở bên trái và nút hủy (x) ở bên phải , nhưng cũng bao gồm mã thông báo bên trong trường tìm kiếm.Làm cho NSSearchField sử dụng NSTokenFieldCell?

NSSearchField with tokens

Có cách nào để làm cho NSSearchField sử dụng một NSTokenFieldCell thay vì một NSSearchFieldCell? Tôi đã thử gọi -setCell: trên cá thể NSSearchField, hoạt động và xuất hiện để hoán đổi ô bằng chứng gọi po [searchField cell] trong trình gỡ lỗi, nhưng bản vẽ của ngắt trường tìm kiếm và không có trường văn bản nào được vẽ.

Tôi có đang tiếp cận điều này đúng cách hoặc có cách nào tốt hơn để làm điều đó không? Cảm ơn!

Cập nhật 2016/10/25: Sử dụng Accessibility Inspector tôi thấy rằng Finder và Mail sử dụng kết hợp các lớp con tin:

  • SGTSearchField : NSSearchField
    • SGTSearchFieldCell : NSSearchFieldCell
    • SGTTokenFieldCell : NSTokenFieldCell

Đây là một phần của khuôn khổ riêng tư được gọi là Suggestions.framework. Hy vọng rằng Apple sẽ biến những lớp này thành công khai trong tương lai. Đảm bảo file a radar nếu bạn muốn xem chức năng này ở chế độ công khai.

+0

Tôi đã đến cùng một câu hỏi khi cố gắng triển khai thanh tìm kiếm được mã hóa. Vì tôi đã sử dụng NSSearchField trước đây, tôi cũng đang tìm phương pháp kết hợp NSSearchField và NSTokenField. Bạn đã nhận được giải pháp nào chưa? –

Trả lời

0

Câu trả lời hay nhất mà tôi dành cho hai bạn là chỉ cần đi với NSTokenField. Bạn có thể sửa đổi nó để hiển thị biểu tượng tìm kiếm nhỏ. Nhưng nếu đó không phải là thực hiện hoặc phá vỡ, bạn có thể nhận được rất nhiều chức năng tokenized từ NSTokenField.