如何在单击NSTextField时使NSComboBox消失? 这是我使用的代码:制作NSComboBox当单击NSTextField时出现
类组合框:(在界面生成器作为自定义类我NSComboBox) comboBox.h:
#import <Cocoa/Cocoa.h>
@interface comboBox1 : NSComboBox
-(void)Hide;
@end
comboBox.m:
#import "comboBox1.h"
@implementation comboBox1
-(void)Hide
{
[self setHidden:YES];
}
@end
类txtField:(作为定制类为我的NSTextField在界面生成器) txtField.h:
#import <Cocoa/Cocoa.h>
@interface txtField1 : NSTextField
@end
txtField.m:
#import "txtField1.h"
#import "comboBox1.h"
@implementation txtField1
-(void)mouseDown:(NSEvent *)theEvent
{
comboBox1 *obj = [[comboBox1 alloc] init];
[obj Hide];
}
@end
但它不工作:当单击文本字段没有任何反应。 谢谢你的建议。
谢谢你的男人! 现在终于在我的NIB中出现NSComboBox,但出现了一个问题:我希望它在用户单击NSTextField时立即出现。使用您提供的代码,当用户开始编写(编辑)NSTextField的内容时,会出现NSComboBox。 任何解决方案? – rambodrahmani 2013-03-06 15:35:17
还有一个问题,你说: 既然你在使用IB,我假设你有一个带有txtField1和comboBox1的View或WindowController。 我没有这样的事情。 – rambodrahmani 2013-03-06 15:36:21
@rambodrahmani当您单击txtField1时,可以使用不同的选项让NSComboBox显示。最简单的方法是在你已经使用的txtField1的'mouseDown:'方法中。 在txtField1的'delegate'中实现一个新的方法。在那个方法中,和你在' - (void)controlTextDidBeginEditing:(NSNotification *)obj'中做的一样。接下来在txtField1的'mouseDown:'调用'delegate'上的那个方法' – 2013-03-06 15:59:42