MFMessageComposeViewController 显示消息正文突出显示以供编辑

MFMessageComposeViewController show with message body highlighted for editing

我们可以像这样创建和显示文本编辑器:

let controller = MFMessageComposeViewController()
controller.body = messageText
controller.recipients = numbers
controller.messageComposeDelegate = self
self.present(controller, animated: true, completion: nil)

是否可以呈现一个突出显示 body 的 MFMessageComposeViewController,这样如果用户不喜欢我们提供的默认消息,他们就可以开始输入新消息?

我查看了文档,但没有找到任何选项。

没有。这是不可能的。

interface for MFMessageComposeViewController 不提供任何属性或函数来影响它呈现消息的方式。 Subclassing 是别无选择,因为 MFMessageComposeViewController 不公开其任何视图组件。

(只是为了 100% 正确:你 可以 当然呈现 MFMessageComposeViewController,然后一旦它可见遍历它的整个视图层次结构直到您找到 class UITextView 的视图,其 textattributedText 属性 等于您提供的 body 文本,然后设置该文本视图的 selectedRange 到文本的全部范围。虽然这可能会起作用(→ 未经测试),但我完全不鼓励你这样做。封装是有原因的,如果 MFMessageComposeViewController 不提供 select text inside its text view 这意味着你不应该这样做。)