首页 > 解决方案 > 第一个表格单元格被 MFMessageComposeViewController 上的联系人输入字段覆盖

问题描述

- (void)sendSmsWithSubject:(NSString *)subject andBody:(NSString *)body {
    MFMessageComposeViewController *smsCompose = [[MFMessageComposeViewController alloc] init];

    smsCompose.subject = subject;
    smsCompose.body = body;
    smsCompose.messageComposeDelegate = self;

    [self presentViewController:smsCompose animated:YES completion:nil];
}

正如您在随附的屏幕截图中所见,第一个表格单元格“TestA”被 MFMessageComposeViewController 上的文本字段覆盖。以上是代码片段。

这似乎是 MFMessageComposeViewController 上的一个错误,但是,在对 stackoverflow 等进行一些搜索之后,没有关于该“问题”的记录。我的代码有什么错误或遗漏吗?在此先感谢您的帮助。

注意:此 UI 问题在 iOS10 设备上不会发生。

在此处输入图像描述

标签: ios11mfmessagecomposeview

解决方案


最后发现,就我而言,问题是由以下原因引起的:

[[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];

作为修复/解决方法:

- (void)sendSmsWithSubject:(NSString *)subject andBody:(NSString *)body {
    [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentAutomatic];

    MFMessageComposeViewController *smsCompose = [[MFMessageComposeViewController alloc] init];

    smsCompose.subject = subject;
    smsCompose.body = body;
    smsCompose.messageComposeDelegate = self;

    [self presentViewController:smsCompose animated:YES completion:nil];
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
    // Disable contentInsetAdjustmentBehavior when leave MFMessageComposeViewController.
    [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];

    [self dismissViewControllerAnimated:YES completion:nil];
}

希望这对遇到相同问题的其他人有所帮助。谢谢。


推荐阅读