NSTextView值已更改

时间:2011-03-05 08:29:22

标签: events callback nstextview

我对mac开发很新(来自网络和iOS背景)我无法弄清楚每次NSTextView的值发生变化时我都会收到通知。有什么想法吗?

4 个答案:

答案 0 :(得分:38)

Ups我刚看到你想要一个来自NSTextView而不是NSTextField的回调

只需添加对象的标题,该标题应该是委托协议

@interface delegateAppDelegate : NSObject <NSApplicationDelegate, NSTextViewDelegate> {
    NSWindow *window;
}

之后添加类似

的方法
-(void)textDidChange:(NSNotification *)notification {
    NSLog(@"Ok");
}

确保将NSTextView的委托属性(不是NSScrollView)与应该接收委托的对象相连接

答案 1 :(得分:4)

以下是解决方案:

NSTextView *textView = ...;

@interface MyClass : NSObject<NSTextStorageDelegate>
@property NSTextView *textView;
@end

MyClass *myClass = [[MyClass alloc] init];
myClass.textView = textView;
textView.textStorage.delegate = myClass;

@implementation MyClass
- (void)textStorageDidProcessEditing:(NSNotification *)aNotification
{
   // self.textView.string will be the current value of the NSTextView
   // and this will get invoked whenever the textView's value changes,
   // BOTH from user changes (like typing) or programmatic changes,
   // like textView.string = @"Foo";
}
@end

答案 2 :(得分:0)

设置nstextfield的委托。在委托的.h文件中添加委托协议 在.m文件中添加-(void)controlTextDidChange:(NSNotification *)obj { NSLog(@"ok"); }

之类的方法

我希望有帮助

答案 3 :(得分:-3)

设置委托,然后使用

- (void) controlTextDidChange: (NSNotification *) notification
{
}