NSTextView粘贴:当粘贴“foo”时,如何粘贴“bar”?

时间:2012-08-13 15:43:27

标签: objective-c cocoa nstextview

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

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

拜托,有没有人知道如何处理这个问题?

编辑:是否有可能以某种方式使用readSelectionFromPasteboard:type:?我只是不知道在被覆盖的textview的方法体中放什么..?

1 个答案:

答案 0 :(得分:8)

试试这个。对文本视图进行子类化,并覆盖粘贴:这样:

@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