我想捕获粘贴到控件中的字符串,并在粘贴之前对字符串应用一些自定义格式。
这怎么可能?
谢谢!
在您的视图/控件中覆盖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 上执行此操作。如果您正在与另一个班级一起工作,您必须找出在这种情况下什么是合适的。