2011-11-11 17 views
5

Saatlerdir arama yaptım ve hala buna bir cevap bulamadım. Sonuçları içeren bir menüyü görüntülemek için NSSearchField'u nasıl edinebilirsiniz. Sonuçları görüntülemek için son aramalar menüsünü kullanabilirim, ancak menü ekranını program aracılığıyla nasıl yapabilirim? Herhangi bir yardım için teşekkürler.NSSearchField sonuçları menüsü

cevap

5

Apple'ın bunu bazı özel yöntemlerle yaptığına inanıyorum. Belki de NSMenu yerine NSWindow kullanır. Bunu yapmanın bir yolu,'a işaret eden bir IBOutlet varsayarak bunu NSSearchField temsilcisine uygulamaktır. bir menü gösteren NSSearchField de yazmaya önleyen

- (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]; 
} 

not edin. Bu yüzden controlTextDidEndEditing: ve controlTextDidChange: kullanmamıştım. Etkinliğin daha fazla özelleştirilmesi için NSEvent's Class Reference'u da kontrol etmelisiniz.

+0

Teşekkürler, mükemmel çalışır. Tek değişiklik, olay yerini konum parametresini değiştirdiğimden, menüyü aşağıya doğru kaydırmaktır, böylece arama alanının üst üste gelmemesi sağlanır. Teşekkürler! – edc1591

+0

Bunu test etmedim, ancak tüm NSEvent öğesini "[NSEvent currentEvent]" olarak değiştirebilirdiniz. Belki de o zaman varsayılan yer vb. – Jef

1

Apple, ihtiyacınız olana benzer some sample koduna sahiptir. Örnek kod NSTextField (NSSearchField bir üst sınıfı olan) kullanır. Umarım, bu senin problemini çözer.