我的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
. 我有点困惑。
Edit2:我已插入事件[self performSelectorOnMainThread:@selector(changeStringValue:) withObject:myTextField waitUntilDone:YES];
内部和 changeStringValue 函数内部:现在将按钮悬停在我调用该函数的按钮上(我看到“运行”日志),但没有任何反应。该功能作为分配给按钮的已发送操作,仍然有效。我也试过,但它是一样的。mouseEnter:
NSLog(@"Running");
waitUntilDone:YES/NO
withObject:myTextField/self