Кнопки на экране приложения iphone не отвечают после вызова почтового интерфейса и возврата в приложение после отправки или отмены - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть приложение ios iphone.Приложение имеет главное окно XIB, состоящее из панели вкладок и области просмотра.Существует еще одна подписка xib, которая называется «обновление подписки» и состоит из кнопки, пользователи могут нажать на кнопку и отправить электронное письмо.Эта кнопка открывает окно электронной почты.В приложении делегат загружается обновление подписки xib.Обновление подписки добавляется как подпредставление окна представления rootViewController. Когда пользователи нажимают кнопку обновления подписки, всплывает окно почты.После отправки почты или отмены система возвращается в приложение.Когда он возвращается, мы обнаруживаем, что нажата только кнопка обновления подписки, все остальные кнопки на главном экране не активируются.Кнопка обновления подписки перемещает свою позицию в верхний левый угол.Снимки экрана прилагаются.

Экран приложения.Показывает нижнюю середину кнопки обновления подписки

Всплывающее окно электронной почты

Экран после отмены и удаления черновика во всплывающем окне электронной почты

Можно нажать только кнопку обновления подписки.

       (BOOL)application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
       {

        self.sharedOperationQueue = [[NSOperationQueue new] 
        autorelease];


        SubscribeUpdate *subUpdateCont1 = [[SubscribeUpdate alloc] 
        initWithNibName:@"SubscribeUpdate" bundle:nil];
        self.subscribeUpdateController = subUpdateCont1;
        //self.subscribeUpdateController.view.hidden = YES;
        [subUpdateCont1 release];

        SubscribeUpdate *subUpdateCont2 = [[SubscribeUpdate alloc] 
        initWithNibName:@"SubscribeUpdate" bundle:nil];
        self.subscribeUpdateControllerVideo = subUpdateCont2;
        [subUpdateCont2 release];

        // Add the tab bar controller's current view as a subview of 
        the 
        window
        window.rootViewController = tabBarController;
        [window makeKeyAndVisible];

        [window.rootViewController.view 
         addSubview:subscribeUpdateController.view];


        CGRect newFrame = subscribeUpdateController.view.frame;
        CGRect newFrameRoot = window.rootViewController.view.frame;
        CGRect newFrameTabBar = tabBarController.tabBar.frame;


        NSLog(@"root frame x = %d ",(int)newFrameRoot.origin.x);
        NSLog(@"root frame y = %d ",(int)newFrameRoot.origin.y);
        NSLog(@"root frame width = %d ", 
        (int)newFrameRoot.size.width);
        NSLog(@"root frame height = %d ", 
        (int)newFrameRoot.size.height);

        NSLog(@"frame x = %d ",(int)newFrame.origin.x);
        NSLog(@"frame y = %d ",(int)newFrame.origin.y);
        NSLog(@"frame width = %d ",(int)newFrame.size.width);
        NSLog(@"frame height = %d ",(int)newFrame.size.height);

        NSLog(@"tabbar x = %d ",(int)newFrameTabBar.origin.x);
        NSLog(@"tabbar y = %d ",(int)newFrameTabBar.origin.y);
        NSLog(@"tabbar width = %d ",(int)newFrameTabBar.size.width);
        NSLog(@"tabbar height = %d ", 
        (int)newFrameTabBar.size.height);


        newFrame.origin.x = newFrameRoot.size.width/2 - 
        newFrame.size.width/2;
        newFrame.origin.y = newFrameRoot.size.height - 
        newFrame.size.height- 
        newFrameTabBar.size.height-10;
        //newFrame.size.width = newFrameRoot.size.width;
        //newFrame.size.width = 200;
        //newFrame.size.height = 200;
        [[subscribeUpdateController view] setHidden:NO];

        [subscribeUpdateController.view setFrame:newFrame];

        //subscribeUpdateController.view.hidden = YES;
        //subscribeUpdateController.view.alpha = 1;


        [[UIApplication sharedApplication] 
        setStatusBarStyle:UIStatusBarStyleLightContent];


        // Place the imageviews on the navigation bar
            //  [window addSubview:imageView];
        //[window addSubview:titleImage];
        if (self.swingFullscreen == nil)
        {
            UINavigationController *navController = 
        [self.tabBarController.viewControllers objectAtIndex:3];
            self.swingFullscreen = [navController.viewControllers 
         objectAtIndex:0];
        }

        return [[FBSDKApplicationDelegate sharedInstance] 
        application:application

         didFinishLaunchingWithOptions:launchOptions];

         }


        //In subscribeupdate.m

        (IBAction)SendUpdateEmail:(id)sender {
        [self sendEmail:emailAddress subject:updateEmailSubject 
         body:updateEmailBody];
         }

           -(void)sendEmail: (NSString *)to subject 
        (NSString*)subject 
         body:(NSString *)body {
           MFMailComposeViewController *composer = 
         [[MFMailComposeViewController alloc] init];
        composer.mailComposeDelegate = self;

        [composer setToRecipients:[NSArray arrayWithObject: to]];
        [composer setSubject:subject];
        [composer setMessageBody:body isHTML:NO];
        composer.navigationBar.barStyle = UIBarStyleBlack;

        GolfCoachAppDelegate *appDelegate = (GolfCoachAppDelegate *) 
         . 
        [[UIApplication sharedApplication] delegate];

        if ([MFMailComposeViewController canSendMail] == YES) {
            [self presentViewController:composer animated:true 
           completion:nil];
        }
        [composer release];
         }


        -(void)mailComposeController:(MFMailComposeViewController 
        *)controller didFinishWithResult:(MFMailComposeResult)result 
        error: 
         (NSError *)error {

        switch (result) {
            case MFMailComposeResultSent:
                //Email sent
                break;
            case MFMailComposeResultSaved:
                //Email saved
                break;
            case MFMailComposeResultCancelled:
                //Handle cancelling of the email
                break;
            case MFMailComposeResultFailed:
                //Handle failure to send.
                break;
            default:
                //A failure occurred while completing the email
                break;
        }
        [self becomeFirstResponder];
        [self dismissViewControllerAnimated:true completion:nil];

Я попытался изменить порядок представлений, особенно представления обновления подписки.Ничего не случилось.Я попытался скрыть представление обновления подписки после всплывающего сообщения, и в этом случае кнопки на главном экране начинают работать.

...