1

我想捕获粘贴到控件中的字符串,并在粘贴之前对字符串应用一些自定义格式。

这怎么可能?

谢谢!

4

1 回答 1

6

在您的视图/控件中覆盖paste:(粘贴:是UIResponderStandardEditActions非正式协议的一部分)。在最简单的情况下,你会这样做:

- (void)paste:(id)sender
{
   UIPasteboard* pasteboard = [UIPasteboard generalPasteboard];
   NSString* rawString = pasteboard.string;
   NSString* formattedString =  // do something fun with rawString here
   pasteboard.string = formattedString;
   [super paste:sender];
}

这是假设您不需要对字符串做一些非常花哨的事情(例如插入动画笑脸或其他东西),在这种情况下,您不应该调用super而是自己进行插入(如果您在 a 上执行此操作,UITextView则可以使用selectedRange属性来正确插入)。

编辑:要从NSPasteBoard您应该使用–stringForType:其他几种数据访问方法之一获取数据。您可能必须验证字符串/数据以确保它是可以粘贴的。

你可能不应该打电话super但使用

[self insertText:formattedString];

如果您在 NSTextView 上执行此操作。如果您正在与另一个班级一起工作,您必须找出在这种情况下什么是合适的。

于 2010-02-23T17:37:08.443 回答