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
的视图,其 text
或 attributedText
属性 等于您提供的 body
文本,然后设置该文本视图的 selectedRange
到文本的全部范围。虽然这可能会起作用(→ 未经测试),但我完全不鼓励你这样做。封装是有原因的,如果 MFMessageComposeViewController
不提供 select text inside its text view 这意味着你不应该这样做。)
我们可以像这样创建和显示文本编辑器:
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
的视图,其 text
或 attributedText
属性 等于您提供的 body
文本,然后设置该文本视图的 selectedRange
到文本的全部范围。虽然这可能会起作用(→ 未经测试),但我完全不鼓励你这样做。封装是有原因的,如果 MFMessageComposeViewController
不提供 select text inside its text view 这意味着你不应该这样做。)