iphone - 禁用 MFMailComposeViewController 上的编辑

标签 iphone ipad ios mfmailcomposeviewcontroller

我们有一个业务规则,需要限制在 MFMailComposeViewController 上编辑电子邮件正文内容。内容将预先填充并需要保持静态。是否可以获取 UITextView 对象并将其设置为禁用或类似的内容?

另一个想法是在 UITextView 顶部显示清晰的 View 以防止任何交互。

有什么想法吗?

最佳答案

好吧,是的,答案是如果不使用私有(private) API,这是不可能的。

我设法使用以下代码来做到这一点。

- (void) getMFComposeBodyFieldViewFromView:(UIView *)view {
   for (UIView *item in view.subviews) {
    if ([[[item class] description] isEqualToString:@"MFComposeTextContentView"]) {
         self.mailBodyView = item;
         break;
      }
      if([item.subviews count] > 0) {
        [self getMFComposeBodyFieldViewFromView:item];
      }
   }
}

然后调用上述方法,以便设置 ivar mailBodyView,然后调用 UIWebDocumentView 上的 _setEditable: 方法,其中 MFComposeBodyField 继承自。

[self getMFComposeBodyFieldViewFromView:mailComposeViewController.view];
[self.mailBodyView setEditable:NO];

这会导致正文中的内容无法编辑,交互有点奇怪,因为键盘仍然出现,您仍然可以移动光标并选择内容,但这肯定会阻止用户编辑。

更新

我更新了代码以查找 MFComposeTextContentView (它是 MFComposeBodyField 的父级),并在该对象上调用 setEditable: 来阻止键盘操作接下来,更好的解决方案!

关于iphone - 禁用 MFMailComposeViewController 上的编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786999/

相关文章:

ios - UIWebView 如何用于自动抓取需要身份验证的页面?

ios - 在 iOS SDK 中使用短信/彩信发送附件

iphone - 返回从 block 内部设置的 NSString

ios - 使用 UIPinchGestureRecognizer 捏合时限制 UIPanGestureRecognizer,适用于 iPad

ios - 覆盖 UIImage(名为 : )

ios - Xamarin 检测文本字段的程序更改

javascript - iPad 书签不弹出

iphone - UISplitViewController 中的 UITableViewController

ios - 将事件添加到 iOS 7 日历

iOS CPU 使用率飙升