有人在使用这个委托方法吗?我收到回调
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
但不是在这个上。该文档似乎对它的用途有点模棱两可
- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange
根据 Web 上的文档,这就是它的用途:
讨论 如果用户点击或长按文本附件并且其图像属性不为零,则文本视图调用此方法。此方法的实现是可选的。除了显示与文本内联的文本附件外,您还可以使用此方法触发操作。
这是 Xcode 5 文档:
询问代理指定的文本视图是否应在给定的文本范围内显示提供的文本附件。当数据检测器在其文本容器中识别出文本附件字符时,文本视图调用此方法。此方法的实现是可选的。除了显示与给定范围内的文本内联的文本附件外,您还可以使用此方法触发替代操作。
编辑:
嗯,好的,我发现了问题所在。如果我从 iOS 粘贴图像,则它可以工作,但是如果图像是从 OS X 粘贴的,则它不会。尽管图像似乎在文本视图中正确显示,但在两个平台上使用的实际附件格式似乎并不完全相同。仔细检查后,iOS 上的 NSTextAttachment 类似乎与 OS X 上的不同。
如果有人可以在这里阐明跨平台兼容性,请这样做。
此外,如果我在将图像粘贴到 iOS 后保存属性字符串,然后检索它并在 UITextView 中显示它与附件的交互不再可能。如果内容为 nil,则在存储图像时,图像实际上被放置在内容中。因此,也许我将不得不遍历所有附件以检查哪些数据存储在哪里,特别是要找出 OS X 和 iOS 平台之间的行为差异。
进一步编辑:该方法仅在附件图像不是 nil 时才被调用,尽管显示了图像,但实际图像属性实际上可以是 nil,我真傻!无论如何,修复似乎是检查属性字符串中的所有附件并将它们的图像属性设置为某些东西,通常是 fileWrapper 的内容。默认的 NSTextAttachment 行为似乎是在归档时将图像存储在 fileWrapper 中,但在未归档时它不会执行相反的操作。无论如何,我想在附件中保留原始图像,但根据设备显示原始图像的适当缩放版本!