objective-c - NSTextView粘贴: how to paste "bar" instead when "foo" is pasted?

标签 objective-c cocoa nstextview

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

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

请问,有谁知道如何处理这个问题吗?

编辑:是否可以为此使用 readSelectionFromPasteboard:type:?我只是不知道要在我覆盖的 textview 的方法体中放入什么......?

最佳答案

试试这个。子类化您的 TextView ,并覆盖粘贴:这样:

@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/

相关文章:

ios - 如何等到 UITableView 内置动画完成?

objective-c - 关于在 ios View 之间共享信息

cocoa - 绑定(bind) - 主细节数组 Controller

objective-c - 显示模态窗口时禁用(灰色)主菜单?

objective-c - 书籍布局 NSTextFields——返回页面?

objective-c - NSTextView 的意外行为(因为没有标题栏的 NSWindow?)

iphone - 如何识别当前哪个文本字段是第一响应者

ios - 强制 UICollectionView 停止滚动

iphone - 为什么我的 iPhone 应用程序中的默认 UI 控件变得模糊?

macos - 如何在 NSTextView 中禁用这些键盘快捷键?