Set First Responder in MFMailComposeViewController?

后端 未结 4 1450
南笙
南笙 2020-12-18 05:25

I\'m using Apple\'s MailComposer example application to send email from within my application (OS 3.0 functionality). Is it possible to set the To, Subject, or Body fields a

4条回答
  •  无人及你
    2020-12-18 06:00

    You are able to make these fields become the first responder.

    if you add the following method to your class...

    //Returns true if the ToAddress field was found any of the sub views and made first responder
    //passing in @"MFComposeSubjectView"     as the value for field makes the subject become first responder 
    //passing in @"MFComposeTextContentView" as the value for field makes the body become first responder 
    //passing in @"RecipientTextField"       as the value for field makes the to address field become first responder 
    - (BOOL) setMFMailFieldAsFirstResponder:(UIView*)view mfMailField:(NSString*)field{
        for (UIView *subview in view.subviews) {
    
            NSString *className = [NSString stringWithFormat:@"%@", [subview class]];
            if ([className isEqualToString:field])
            {
                //Found the sub view we need to set as first responder
                [subview becomeFirstResponder];
                return YES;
            }
    
            if ([subview.subviews count] > 0) {
                if ([self setMFMailFieldAsFirstResponder:subview mfMailField:field]){
                    //Field was found and made first responder in a subview
                    return YES;
                }
            }
        }
    
        //field not found in this view.
        return NO;
    }
    

    Then, after you present the MFMailComposeViewController, pass the MFMailComposeViewController's view into the function along with the field you want to become first responder.

    MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
    mailComposer.mailComposeDelegate = self;
    
    /*Set up the mail composer*/
    
    [self presentModalViewController:mailComposer animated:YES];
    [self setMFMailFieldAsFirstResponder:mailComposer.view mfMailField:@"RecipientTextField"];
    [mailComposer release];
    

提交回复
热议问题