Значение NSTextView изменено - PullRequest
15 голосов
/ 05 марта 2011

Я довольно новичок в разработке для Mac (из Интернета и iOS) и не могу понять, как получать уведомления каждый раз, когда изменяется значение NSTextView. Есть идеи?

Ответы [ 4 ]

38 голосов
/ 05 марта 2011

Ups Я только что увидел, что вы хотите обратный вызов из NSTextView, а не NSTextField

Просто добавьте в заголовок объекта, которому должен быть делегирован протокол

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

После этого вы добавляете метод, подобный

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

Убедитесь, что вы связали свойство делегата NSTextView (не NSScrollView) с объектом, который должен получить делегат

4 голосов
/ 07 января 2015

Вот решение:

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
0 голосов
/ 05 марта 2011

Установите делегата и затем используйте

- (void) controlTextDidChange: (NSNotification *) notification
{
}
0 голосов
/ 05 марта 2011

установить делегата nstextfield.в .h файле делегата вы добавляете протокол делегата. В .m файле вы добавляете метод вроде -(void)controlTextDidChange:(NSNotification *)obj { NSLog(@"ok"); }

Я надеюсь, что это поможет

...