lockingMFMailComposeViewController中的字段

是否有可能以某种方式lockingMFMailComposeViewController的字段,以便正文,收件人等不能由用户更改? 我需要用户发送的电子邮件去特定的帐户和身体满足一定的标准,所以如果用户大幅编辑的格式一切都可能会可怕的错误..在此刻的身体是从数据填写用户input到前一个视图中的文本框和dateselect器。

基本上我觉得把字段locking而不是显示警告或者说“请不要编辑信息”是更专业的,所以如果字段不能被locking,那么它不是一个大问题,但是任何帮助将不胜感激。

从下面的链接下载框架。 然后,我已经把一些代码发送到一个很好的“请稍候”覆盖的电子邮件。 我附上了它在运行时的样子(几秒钟)。 请注意,我没有创buildSMTP框架的功劳。 它是从互联网下载永久search后。 您可以下载的zip文件包括我为用户反馈创build的叠加图像。 它有@ 2x和常规。 你将不得不进入界面生成器,并创build标签,虽然说“发送testing驱动器..”。 它已经在代码中,但我没有从代码中添加它。 所以你必须添加它在IB。

1.确保将您下载的框架添加到您的项目中。

2.确保将CFNetwork框架添加到您的项目中

3.确保在界面生成器中附加UILabel名称“loadingLabel”

4.代码所指的用户名和密码是一个smtp服务器。 如果你没有创build一个Gmail帐户,并使用Gmail的设置。 如果你不熟悉Gmail的设置谷歌“Gmail的SMTP”你会发现你所需要的。

在这里find框架和艺术

对于.h文件,请确保包含:

 //for sending email alert UIActivityIndicatorView * spinner; UIImageView * bgimage; IBOutlet UILabel * loadingLabel; } @property (nonatomic, retain)IBOutlet UILabel * loadingLabel; @property (nonatomic, retain)UIImageView * bgimage; @property (nonatomic, retain)UIActivityIndicatorView * spinner; -(void)sendEmail; -(void)removeWaitOverlay; -(void)createWaitOverlay; -(void)stopSpinner; -(void)startSpinner; 

对于你的.m文件包括:

 @synthesize bgimage,spinner,loadingLabel; // add this in ViewDidLoad //set loading label to alpha 0 so its not displayed loadingLabel.alpha = 0; 

一切都是自己的function

 -(void)sendEmail { // create soft wait overlay so the user knows whats going on in the background. [self createWaitOverlay]; //the guts of the message. SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init]; testMsg.fromEmail = @"youremail@email.com"; testMsg.toEmail = @"targetemailaddress@email.com"; testMsg.relayHost = @"smtpout.yourserver.net"; testMsg.requiresAuth = YES; testMsg.login = @"yourusername@email.com"; testMsg.pass = @"yourPassWord"; testMsg.subject = @"This is the email subject line"; testMsg.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS! // Only do this for self-signed certs! // testMsg.validateSSLChain = NO; testMsg.delegate = self; //email contents NSString * bodyMessage = [NSString stringWithFormat:@"This is the body of the email. You can put anything in here that you want."]; NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey, bodyMessage ,kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil]; testMsg.parts = [NSArray arrayWithObjects:plainPart,nil]; [testMsg send]; } - (void)messageSent:(SKPSMTPMessage *)message { [message release]; //message has been successfully sent . you can notify the user of that and remove the wait overlay [self removeWaitOverlay]; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message Sent" message:@"Thanks, we have sent your message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; [alert release]; } - (void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error { [message release]; [self removeWaitOverlay]; NSLog(@"delegate - error(%d): %@", [error code], [error localizedDescription]); UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Email Error" message:@"Sending Failed - Unknown Error :-(" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; [alert show]; [alert release]; } -(void)createWaitOverlay { // fade the overlay in loadingLabel = @"Sending Test Drive..."; bgimage = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,480)]; bgimage.image = [UIImage imageNamed:@"waitOverLay.png"]; [self.view addSubview:bgimage]; bgimage.alpha = 0; [bgimage addSubview:loadingLabel]; loadingLabel.alpha = 0; [UIView beginAnimations: @"Fade In" context:nil]; [UIView setAnimationDelay:0]; [UIView setAnimationDuration:.5]; bgimage.alpha = 1; loadingLabel.alpha = 1; [UIView commitAnimations]; [self startSpinner]; [bgimage release]; } -(void)removeWaitOverlay { //fade the overlay out [UIView beginAnimations: @"Fade Out" context:nil]; [UIView setAnimationDelay:0]; [UIView setAnimationDuration:.5]; bgimage.alpha = 0; loadingLabel.alpha = 0; [UIView commitAnimations]; [self stopSpinner]; } -(void)startSpinner { spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; spinner.hidden = FALSE; spinner.frame = CGRectMake(137, 160, 50, 50); [spinner setHidesWhenStopped:YES]; [self.view addSubview:spinner]; [self.view bringSubviewToFront:spinner]; [spinner startAnimating]; } -(void)stopSpinner { [spinner stopAnimating]; [spinner removeFromSuperview]; [spinner release]; } 

最终结果如下所示。 屏幕显示变暗(有点像UIAlert显示)。 它显示一条消息,说明它正在发送,然后在发送消息时“提亮”备份。

快乐编码!

在这里输入图像说明