当我将文本粘贴到NSTextView时,如何仅粘贴纯文本?

Ste*_*Hsu 12 cocoa copy-paste nstextview

当我将文本粘贴到NSTextView时,我希望我只能粘贴纯文本.应删除所有富文本格式,包括:字体,颜色,链接和段落样式.粘贴的所有文本都应使用文本视图的默认字体和样式显示.NSTextView默认接受富文本,如何禁用它?

jtb*_*des 10

使用setRichText:禁用富文本.

  • 您可以尝试使用子类来覆盖`-paste:`并调用`-pasteAsPlainText:`.我不确定这是否有效. (3认同)

Ste*_*Hsu 8

NSTextView使用以下方法定义自定义类:

- (NSArray *)readablePasteboardTypes {
    return [NSArray arrayWithObjects:NSStringPboardType, 
            nil];
}
Run Code Online (Sandbox Code Playgroud)

注意:从Mac OS X开始typedef,粘贴板类型的新内容NSPasteboardTypeString代替NSStringPBoardType:

- (NSArray *)readablePasteboardTypes {
    return [NSArray arrayWithObjects:NSPasteboardTypeString,
            nil];
}
Run Code Online (Sandbox Code Playgroud)


Mih*_*ail 7

在您的NSTextView:中覆盖此方法:

- (NSString *)preferredPasteboardTypeFromArray:(NSArray *)availableTypes restrictedToTypesFromArray:(NSArray *)allowedTypes {
  if ([availableTypes containsObject:NSPasteboardTypeString]) {
    return NSPasteboardTypeString;
  }

  return [super preferredPasteboardTypeFromArray:availableTypes restrictedToTypesFromArray:allowedTypes];
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这既适用于粘贴,也适用于拖放.