我已经解决了一段时间了。.我认为这应该是一件容易的事,但这不是= D

我想做的是,当用户单击组合框时显示组合框的列表,但不是专门在按钮中显示。

任何想法?
提前致谢!

最佳答案

此答案适合问题的标题,但不适合问题本身。 Omer想要触摸一个文本字段并弹出框。

当用户输入文本时,此解决方案将显示弹出窗口。

我在Jens Alfke的cocoabuilder上找到了这个答案。我在这里重新发布了他的代码。谢谢詹斯。

original cocoabuilder post: (http://www.cocoabuilder.com/archive/cocoa)

@interface NSComboBox (MYExpansionAPI)
@property (getter=isExpanded) BOOL expanded;
@end

@implementation NSComboBox (MYExpansionAPI)

- (BOOL) isExpanded
{
    id ax = NSAccessibilityUnignoredDescendant(self);
    return [[ax accessibilityAttributeValue:
                NSAccessibilityExpandedAttribute] boolValue];
}

- (void) setExpanded: (BOOL)expanded
{
    id ax = NSAccessibilityUnignoredDescendant(self);
    [ax accessibilitySetValue: [NSNumber numberWithBool: expanded]
                 forAttribute: NSAccessibilityExpandedAttribute];
}

我在controlTextDidChange:方法中使用了此代码。
- (void) controlTextDidChange:(NSNotification *) aNotification {
  NSTextField *textField = [aNotification object];
  NSString *value = [textField stringValue];
  NSComboBox *box = [self comboBox];
  if (value == nil || [value length] == 0) {
    if ([box isExpanded]) { [box setExpanded:NO]; }
  } else {
    if (![box isExpanded]) { [box setExpanded:YES]; }
  }
}

关于objective-c - 如何以编程方式打开NSComboBox的列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4499262/

10-09 16:16