我有一个视图,其中三个NSTextField连接到一个视图控制器,它作为所有三个的委托.
我已成功实现controlTextDidEndEditing来拦截用户输入的文本并更改模型中的属性.该方法在委托中是唯一的,并且所有三个文本字段都触发它.问题是,我如何确定哪一个发出了通知?我可以从通知的关键"NSFieldEditor"获取NSTextView,但这并不能告诉我它是哪一个.一开始我想到使用NSTextField占位符,但该方法返回一个NSTextView,它似乎没有占位符属性.
任何的想法?
您应该能够获得对NSTextField的引用[notification object].如果所有三个NSTextField都可用作代理,则可以轻松检查哪一个触发了事件.像这样:
- (void)controlTextDidEndEditing:(NSNotification *)aNotification {
NSTextField* textField = (NSTextField *)[aNotification object];
if (textField == textField1) {
// textField1 triggered the event
} else if (textField == textField2) {
...
} else if (textField == textField3) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1493 次 |
| 最近记录: |