我知道如何使用 NSTextView 执行此操作,但 NSTextField 似乎没有提供访问NSTextStorage
支持它的方法,因此我无法将自己设置为 delegate 和 process -textStorageDidProcessEditing:
。
我有一个NSTextField
作为工作表的一部分。如果该文本字段在任何时候都是空的,则应禁用 OK 按钮,直到提供了一些输入。这基本上就是我想做的所有事情,我敢肯定有一种非常简单的方法可以做到这一点?
我试过:
[[[filenameInput cell] textStorage] setDelegate:self];
认为这NSTextFieldCell
将提供文本存储(主要是因为 Xcode 友好地为我自动完成了它),然后当然,我通过委托方法进行了验证:
-(void)textStorageDidProcessEditing:(NSNotification *)notification {
BOOL allowSubmit = ([[filenameInput stringValue] length] > 0)
&& (([relativePathSwitch state] == NSOnState) || ([[localPathInput stringValue] length] > 0));
[createButton setEnabled:allowSubmit];
}
这会编译但会导致运行时错误,因为NSTextFieldCell
不响应textStorage
.
我应该在这里遵循的标准模式是什么?我想这一定是 Cocoa 开发人员的“日常”任务之一:)