我想捕获粘贴到控件中的字符串,并在粘贴之前对字符串应用一些自定义格式。
这怎么可能?
谢谢!
答案 0 :(得分: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
但是自己进行插入(如果你是在UITextView
上执行此操作,您可以使用selectedRange
属性进行正确插入。
编辑:要从NSPasteBoard
获取数据,您应使用–stringForType:
或several other data access methods之一。您可能必须验证字符串/数据以确保它可以粘贴。
您可能不应该致电super
但请使用
[self insertText:formattedString];
如果您在NSTextView上执行此操作。如果你正在与另一个班级一起工作,你必须找出适合这种情况的课程。