在开发应用程序的过程中,有人向我提交了错误报告 - “无法将长文本粘贴到文本字段中”。果然,它挂在水龙头上的“粘贴”气泡仍然是蓝色的,什么也没发生。我做了一点实验,发现一切都适用于大约 60,000 个字符的文件(并且不会花费很长时间),但 65537 每次都会杀死它。
我进一步实验,发现一些第三方应用程序以及“Notes”应用程序表现出相同的行为。
如果这是 UITextView(在 iOS6 中)中的一个真正问题,我不希望能够修复它以便可以粘贴大量文本,但我想尽可能避免挂起。任何人都可以建议一种在挂起 UITextView 之前捕获文本的方法吗?
编辑:感谢rmaddy,这是我用来使它工作的:
#import <MobileCoreServices/UTCoreTypes.h>
#define kUITextViewMaximumPaste (65000)
...
- (void)paste:(id)sender {
UIPasteboard *pb = [UIPasteboard generalPasteboard];
NSString *type = (NSString *)kUTTypeText;
if ([pb containsPasteboardTypes:@[type]]) {
NSString *txt = [pb valueForPasteboardType:type];
if([txt length] > kUITextViewMaximumPaste) {
[pb setValue:[txt substringToIndex:kUITextViewMaximumPaste] forPasteboardType:type];
}
}
[super paste:sender];
}