【问题标题】:NSTextView doesn't call controlTextDidChange:NSTextView 不调用 controlTextDidChange:
【发布时间】:2012-03-05 12:29:28
【问题描述】:

我有一个类(“TextEditorViewController”),里面有一个 NSTextView(“textView”)对象。我已将它与 .xib 文件中的 NSTextView 连接起来。这是我的 .h 文件:

#import <Foundation/Foundation.h>

@interface TextEditorViewController : NSObject {
    IBOutlet NSTextView *textView;           // connected in MainMenu.xib
    IBOutlet NSTextField *displayCharacters; // connected in MainMenu.xib
}

@end

这是我的 .m 文件:

#import "TextEditorViewController.h"    

@implementation TextEditorViewController

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
    NSLog(@"applicationDidFinishLaunching called"); // printed to the debugger
    [textView setDelegate:(id)self];
}

- (void)controlTextDidChange:(NSNotification *)obj {
    NSLog(@"controlTextDidChange called"); // don't printed to the debugger ???
    [displayCharacters setIntValue:[[textView string] length]];
}

@end

但是当我更改 NSTextView 中的文本时,它不会调用 controlTextDidChange:! 为什么?

感谢您的回答! =)

【问题讨论】:

    标签: objective-c class delegates text-editor nstextview


    【解决方案1】:

    在新项目中重建文件后它工作。似乎是文件管理配置问题。

    【讨论】:

      【解决方案2】:

      将委托部分移动到 viewDidLoad。
      为什么不把它放到视图控制器中?

      【讨论】:

      • 你是说 awakeFromNib 吗? Mac OS X 不存在 viewDidLoad。我试过 awakeFromNib 但它仍然不起作用:(
      • 对不起,我以为是关于 iOS 的。
      • Nothing... 我在 controlTextDidChange: 中调用了 NSLog,但没有输出。当我在该方法中设置断点时,如果我更改文本,它不会停止。
      • 哈哈,不可能是iOS,因为NSTextField & NSTextView :D
      • 请给 setDelegate 设置断点。让我们看看Textview是否已经存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多