簡體   English   中英

UIActionSheet 打開郵件應用程序 iPhone

[英]UIActionSheet to open up Mail Application iPhone

這個問題讓我很困惑,所以希望有人能提供幫助。 我在一個視圖上有一個 UIActionSheet,其中包含三個選項。一個將我的用戶帶到一個新視圖,一個通過 email 共享,一個通過 SMS 共享。

我創建了 UIActionSheet,它可以正常工作,AlertSheet 的新視圖部分也可以工作。 我已經導入了 Message.UI 框架並設置了郵件和 SMS 選擇器和作曲器,這些都很好。 但是,我無法在 UIActionSheet 上設置兩個“按鈕”來打開郵件和 SMS。

通常我會通過界面生成器執行此操作,並將 UIButton 連接到我創建的操作,但因為這是 UIActionSheet,所以不能那樣做。 很抱歉代碼很長,但我覺得我需要顯示所有內容,所以請參見下文;

-(IBAction)showActionSheet {
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose an Option" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Application Support",@"Share Via Email",@"Share Via SMS",nil];
    [actionSheet showInView:self.view];
    [actionSheet release];
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if(buttonIndex == 0) {
    AppSupportView *controller = [[AppSupportView alloc] initWithNibName:@"AppSupportView" bundle:nil];
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];
    [controller release];
    }

    if(buttonIndex == 1) {

    }

    if(buttonIndex == 2) {

    }

}

- (void)dealloc {
    [feedbackMsg release];
    [super dealloc];
}

- (void)viewDidUnload {
    self.feedbackMsg = nil;
}

-(IBAction)showMailPicker:(id)sender {
    // The MFMailComposeViewController class is only available in iPhone OS 3.0 or later. 
    // So, we must verify the existence of the above class and provide a workaround for devices running 
    // earlier versions of the iPhone OS. 
    // We display an email composition interface if MFMailComposeViewController exists and the device 
    // can send emails. Display feedback message, otherwise.
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));

    if (mailClass != nil) {
        //[self displayMailComposerSheet];
        // We must always check whether the current device is configured for sending emails
        if ([mailClass canSendMail]) {
            [self displayMailComposerSheet];
        }
        else {
            feedbackMsg.hidden = NO;
            feedbackMsg.text = @"Device not configured to send mail.";
        }
    }
    else    {
        feedbackMsg.hidden = NO;
        feedbackMsg.text = @"Device not configured to send mail.";
    }
}

-(IBAction)showSMSPicker:(id)sender {
    //  The MFMessageComposeViewController class is only available in iPhone OS 4.0 or later. 
    //  So, we must verify the existence of the above class and log an error message for devices
    //      running earlier versions of the iPhone OS. Set feedbackMsg if device doesn't support 
    //      MFMessageComposeViewController API.
    Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

    if (messageClass != nil) {          
        // Check whether the current device is configured for sending SMS messages
        if ([messageClass canSendText]) {
            [self displaySMSComposerSheet];
        }
        else {  
            feedbackMsg.hidden = NO;
            feedbackMsg.text = @"Device not configured to send SMS.";

        }
    }
    else {
        feedbackMsg.hidden = NO;
        feedbackMsg.text = @"Device not configured to send SMS.";
    }
}

// Displays an email composition interface inside the application. Populates all the Mail fields. 
-(void)displayMailComposerSheet 
{
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;

    [picker setSubject:@"My BMR Index Rating from Total:Health App"];


    // Set up recipients
    //NSArray *toRecipients = [NSArray arrayWithObject:@""]; 

     //[picker setToRecipients:toRecipients];
    NSString *emailSharing = @"I Just discovered that I have a Target Heart Rate of";
    // Fill out the email body text
    [picker setMessageBody:emailSharing isHTML:YES];

    [self presentModalViewController:picker animated:YES];
    [picker release];
}

// Displays an SMS composition interface inside the application. 
-(void)displaySMSComposerSheet 
{
    MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
    picker.messageComposeDelegate = self;
    NSString *SMSShare = @"I Just discovered that I have a Target Heart Rate of";
    // Fill out the email body text
    picker.body = SMSShare;

    [self presentModalViewController:picker animated:YES];
    [picker release];
}

// Dismisses the email composition interface when users tap Cancel or Send. Proceeds to update the 
// message field with the result of the operation.
- (void)mailComposeController:(MFMailComposeViewController*)controller 
          didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {

    feedbackMsg.hidden = NO;
    // Notifies users about errors associated with the interface
    switch (result)
    {
        case MFMailComposeResultCancelled:
            feedbackMsg.text = @"Result: Mail sending canceled";
            break;
        case MFMailComposeResultSaved:
            feedbackMsg.text = @"Result: Mail saved";
            break;
        case MFMailComposeResultSent:
            feedbackMsg.text = @"Result: Mail sent";
            break;
        case MFMailComposeResultFailed:
            feedbackMsg.text = @"Result: Mail sending failed";
            break;
        default:
            feedbackMsg.text = @"Result: Mail not sent";
            break;
    }
    [self dismissModalViewControllerAnimated:YES];
}


// Dismisses the message composition interface when users tap Cancel or Send. Proceeds to update the 
// feedback message field with the result of the operation.
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller 
                 didFinishWithResult:(MessageComposeResult)result {

    feedbackMsg.hidden = NO;
    // Notifies users about errors associated with the interface
    switch (result)
    {
        case MessageComposeResultCancelled:
            feedbackMsg.text = @"Result: SMS sending canceled";
            break;
        case MessageComposeResultSent:
            feedbackMsg.text = @"Result: SMS sent";
            break;
        case MessageComposeResultFailed:
            feedbackMsg.text = @"Result: SMS sending failed";
            break;
        default:
            feedbackMsg.text = @"Result: SMS not sent";
            break;
    }
    [self dismissModalViewControllerAnimated:YES];
}

@end

問題顯然是我不知道如何繼續使用 (if buttonIndex ==1) 等代碼來打開郵件和短信

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if(buttonIndex == 0) {
    AppSupportView *controller = [[AppSupportView alloc] initWithNibName:@"AppSupportView" bundle:nil];
    controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController:controller animated:YES];
    [controller release];
    }

    if(buttonIndex == 1) {

    }

    if(buttonIndex == 2) {

    }

}

任何幫助,將不勝感激。

謝謝

看起來你需要的所有方法都已經有了..只需添加[self showMailPicker:nil][self showSMSPicker:nil]

if(buttonIndex == 1) {

}

if(buttonIndex == 2) {

}

如果您從頂部開始的第二個按鈕是您的短信按鈕,請將 showSMSPicker 添加到 buttonIndex == 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM