Как я могу удалить NSComboBox при нажатии на NSTextField? Это код, я использую:Сделать NSComboBox Появляется при нажатии на NSTextField
Класс COMBOBOX: (используется в качестве пользовательского класса для моего 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
Но это не работает: когда нажать TextField ничего не происходит. Благодарим вас за консультацию.
Спасибо, человек! Теперь, наконец, появляется NSComboBox в моем NIB, но есть проблема: я хочу, чтобы он появился, как только пользователь нажимает на NSTextField.Вместо кода, который вы указали, NSComboBox появляется, когда пользователь начинает писать (редактировать) содержимое NSTextField. Любые решения для этого? – rambodrahmani
И еще один вопрос, вы сказали: Поскольку вы используете IB, я предполагаю, что у вас есть View- или WindowController с как txtField1, так и comboBox1. У меня такого нет. – rambodrahmani
@rambodrahmani Существуют различные варианты, позволяющие отображать NSComboBox при нажатии на txtField1. Самый простой из них будет в методе 'mouseDown:' txtField1, который вы уже использовали. Внесите новый метод в 'делегат' txtField1. В этом методе выполните то же самое, что и в '- (void) controlTextDidBeginEditing: (NSNotification *) obj'. Далее в 'mouseDown: txtField1:' вызывается этот метод на 'delegate' –