我一直在搜索小時,但仍未找到答案。你怎麼能得到一個NSSearchField
顯示結果菜單。我可以使用最近的搜索菜單來顯示結果,但是如何以編程方式使菜單顯示?謝謝你的幫助。NSSearchField結果菜單
5
A
回答
5
我相信Apple會用一些私人方法來做到這一點。也許它使用NSWindow
而不是NSMenu
。一種方法是在您的NSSearchField
代表中執行此操作,前提是您有一個IBOutlet
指向NSSearchField
。
- (void)controlTextDidEndEditing: (NSNotification *)aNotification
{
NSString *searchString = [searchField stringValue];
NSMenu *menu = [[NSMenu alloc] initWithTitle: @"results"];
[menu addItemWithTitle: searchString action: @selector(someAction:) keyEquivalent: @""];
[menu addItemWithTitle: @"someString" action: @selector(someOtherAction:) keyEquivalent: @""];
NSEvent *event = [NSEvent otherEventWithType: NSApplicationDefined
location: [searchField frame].origin
modifierFlags: 0
timestamp: 0
windowNumber: [[searchField window] windowNumber]
context: [[searchField window] graphicsContext]
subtype: NSApplicationDefined
data1: 0
data2: 0];
[NSMenu popUpContextMenu: [menu autorelease] withEvent: event forView: searchField];
}
請注意,顯示菜單會阻止在NSSearchField
中進一步輸入。這就是爲什麼我使用controlTextDidEndEditing:
而不是controlTextDidChange:
。您還應該檢查NSEvent's Class Reference以獲取更多的事件定製。
1
Apple有some sample代碼類似於你所需要的。示例代碼使用NSTextField(它是NSSearchField的父類)。希望這能解決你的問題。
相關問題
- 1. NSSearchField菜單未更新
- 2. 如何不讓NSSearchField凍結?
- 3. 如何以編程方式顯示NSSearchField菜單?
- 4. 將下拉菜單添加到OS X中的NSSearchField中
- 5. 具有相同結果的菜單項的標籤菜單
- 6. PHP下拉菜單檢索結果
- 7. 查詢到下拉菜單的結果
- 8. 從DATABSE下拉菜單沒有結果
- 9. JSP下拉菜單,縮短結果
- 10. drupal 7菜單返回全局結果
- 11. 芹菜流結果
- 12. 結構菜單
- 13. 菜單子菜單懸停效果
- 14. NSSearchField動畫
- 15. 如果在菜單
- 16. 顯示菜單項上的搜索結果單擊magento
- 17. 芹菜不返回結果
- 18. 得到芹菜組結果
- 19. 在芹菜結合工作結果
- 20. 用NSSearchField過濾NSTreeController?
- 21. NSSearchField和NSSegmentedControl的NSToolbar
- 22. 使NSSearchField使用NSTokenFieldCell?
- 23. 點菜單元素結尾
- 24. Java多級菜單結構
- 25. 菜單結構設計
- 26. XNA - 凍結菜單錯誤
- 27. 菜單結構和循環
- 28. CSS菜單懸停效果
- 29. Bootstrap - 菜單效果不好
- 30. C菜單 - 否則如果
謝謝,完美的作品。唯一的變化是,我修改了事件中的位置參數,將菜單向下移動了大約5個,使其不會與搜索字段重疊。謝謝! – edc1591
我沒有測試過,但也許你可以改變整個NSEvent的事情'[NSEvent currentEvent]'。也許它會得到默認位置等。 – Jef