我的NSButton
子类中包含此代码:
-(void)mouseEntered:(NSEvent *)theEvent{
NSLog(@"ENTER");
NSString *myString = @"foo";
[myTextField setStringValue:myString];
}
-(IBAction)changeStringValue:(id)sender{
NSString *myString = @"foo";
[myTextField setStringValue:myString];
}
IBAction工作正常,但在myTextField
内调用的mouseEntered event
方法不起作用。该事件正在运行(setString除外),事实上我可以看到NSLog,如果我插入NSLog(@"%@", myTextField.stringValue);
,它会显示null
。
有没有人有线索?
编辑:我注意到前一个stringValue NSLog,如果插入-(void)awakeFromNib{...}
,即使只有一个MyButton
类的按钮,也会出现2次:一次是正确的,另一次是null
1}}。我有点困惑。
Edit2:我在[self performSelectorOnMainThread:@selector(changeStringValue:) withObject:myTextField waitUntilDone:YES];
事件中插入mouseEnter:
并在changeStringValue函数中插入NSLog(@"Running");
:现在悬停按钮我调用该函数(我看到“运行”日志)但没有任何反应。该功能作为分配给按钮的已发送操作仍在工作。我也试过了waitUntilDone:YES/NO
和withObject:myTextField/self
,但它是一样的。