Изменено значение NSTextView

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

Ответы

Ответ 1

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

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

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

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

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

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

Ответ 2

Здесь решение:

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 value changes,
   // BOTH from user changes (like typing) or programmatic changes,
   // like textView.string = @"Foo";
}
@end

Ответ 3

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

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

Ответ 4

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

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