首页 文章

识别controlTextDidEndEditing的发件人

提问于
浏览
1

我有一个视图,其中三个NSTextField连接到一个视图控制器,作为所有三个的委托 .

我已成功实现controlTextDidEndEditing来拦截用户输入的文本并更改模型中的属性 . 该方法在委托中是唯一的,并且所有三个文本字段都触发它 . 问题是,我如何识别他们中的哪一个发出了通知?我可以从通知的关键“NSFieldEditor”获取NSTextView,但这并不能告诉我它是哪一个 . 一开始我想到使用NSTextField占位符,但该方法返回一个NSTextView,它似乎没有占位符属性 .

任何的想法?

1 回答

  • 7

    您应该能够通过 [notification object] 获取对NSTextField的引用 . 如果所有三个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) {
           ...
        }
    }
    

相关问题