繁体   English   中英

调整MFMailComposeViewController的大小,并防止其覆盖整个屏幕

[英]Resize the MFMailComposeViewController and prevent it from covering the whole screen

我有一个MFMailComposeViewController,它使用以下方法调用:

    - (IBAction)sendEmail:(id)sender {

    NSArray *toRecipents = [NSArray arrayWithObject:@"email@email.com"];

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:@"Email"];
    [mc setMessageBody:message.text isHTML:NO];
    [mc setToRecipients:toRecipents];

    // Present mail view controller on screen
    [self presentViewController:mc animated:YES completion:NULL];

}

我想要控制器加载时,我希望他的高度比视图的高度小50像素,我不希望他占据整个屏幕。 有什么办法吗?

编辑:我面临的问题是,我正在调用的MFMailComposeViewController最初是在使用模态页面卷曲效果调用的视图控制器内部,因此卷曲效果阻止了我按下发送电子邮件按钮! 这是一张照片

在此处输入图片说明

因此,无论您尝试多少,您都无法单击发送按钮...在这种情况下我该怎么办而不会被苹果拒绝

编辑2:我可以只关闭模式卷曲页面效果,然后弹出此视图控制器吗?

据我所知,没有标准或允许的方式来做您想要的事情。
我还要担心是否会通过批准,因为Apple指出了有关邮件撰写者的以下事项:

要点:此类的视图层次结构是私有的,您不能对其进行修改。 但是,您可以使用UIAppearance协议来自定义实例的外观。 呈现邮件组合视图控制器后,您的应用无法更改电子邮件内容。 用户可以编辑所呈现实例的内容,但是系统会忽略编程更改。 如果要为内容字段设置值,请在显示界面之前进行设置。 类参考

如果您对发送电子邮件有一些自定义设计要求,建议您实现自己的视图并使用一些服务器发送电子邮件,但是我不确定您的设计要求有多难。

尝试手动更改MFMailComposeViewController框架,并使用addSubview:而不是presentViewController:animated:completion: ::

mc.view.frame = CGRectMake(0, 20, 320, 400);
// Use addSubview: insead of [self presentViewController:mc animated:YES completion:NULL];
[self.view addSubview:mc.view];

在此处输入图片说明

注意:我不确定此行为是否会通过Apple App Store批准过程来实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM