У меня есть приложение 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];
Я попытался изменить порядок представлений, особенно представления обновления подписки.Ничего не случилось.Я попытался скрыть представление обновления подписки после всплывающего сообщения, и в этом случае кнопки на главном экране начинают работать.