4

我有一个 NSTextView,用户可以将纯文本粘贴到其中。

当用户在粘贴板中有“foo”时,我希望粘贴“bar”。换句话说,用户进入网络浏览器,选择“foo”,cmd+c,切换到我的 NSTextView,cmd+v 并且“bar”出现在插入点。

请问,有谁知道如何解决这个问题?

编辑:是否有可能以某种方式readSelectionFromPasteboard:type:用于此?我只是不知道在我重写的文本视图的方法体中放什么..?

4

1 回答 1

9

试试这个。子类化您的文本视图,并覆盖 paste: 这样:

@implementation RDTextView

-(void)paste:(id)sender {
    NSPasteboard *pb = [NSPasteboard generalPasteboard];
    NSString *pbItem = [pb readObjectsForClasses: @[[NSString class],[NSAttributedString class]] options:nil].lastObject;
    if ([pbItem isKindOfClass:[NSAttributedString class]]) 
        pbItem = [(NSAttributedString *)pbItem string];

    if ([pbItem isEqualToString:@"foo"]) {
        [self insertText:@"bar"];
    }else{
        [super paste:sender];
    }
}

@end
于 2012-08-13T20:21:06.247 回答