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

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

请问有人知道怎么处理吗?

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

最佳答案

试试这个。子类化你的文本 View ,并覆盖粘贴:这样:

@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

关于objective-c - NSTextView 粘贴 : how to paste "bar" instead when "foo" is pasted?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11937726/

10-14 23:43