Iphone 目标c-UIActivityViewController定向模式
我的iPhone应用程序设计为只支持纵向,除了一个显示照片的视图控制器,还支持横向模式 因此,总体而言,我的项目支持所有方向,但每个视图控制器(照片视图控制器除外)都实现了该方法:Iphone 目标c-UIActivityViewController定向模式,iphone,ios,objective-c,uiinterfaceorientation,uiactivityviewcontroller,Iphone,Ios,Objective C,Uiinterfaceorientation,Uiactivityviewcontroller,我的iPhone应用程序设计为只支持纵向,除了一个显示照片的视图控制器,还支持横向模式 因此,总体而言,我的项目支持所有方向,但每个视图控制器(照片视图控制器除外)都实现了该方法: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrai
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
问题:
在我的一个(唯一的纵向)视图控制器中,我使用UIActivityViewController
让用户选择通过电子邮件或短信共享内容
当用户选择电子邮件选项时,它会自动显示ios本机电子邮件视图控制器
如果用户现在将设备的方向更改为横向,则电子邮件视图控制器也将更改为横向,如果用户现在点击“取消/发送”按钮,则电子邮件控制器将被解除,并且现在我的所有应用程序都处于横向
是否有办法强制eamil view控制器仅处于纵向模式
我知道我可以创建自己的电子邮件视图控制器和子类UIActivity
来显示它,但是UIActivityViewController
在显示时不会显示默认的电子邮件图标,我真的很喜欢它来显示它,而不是我将提供的其他图标(必须是灰色的)。也许你应该试试看
- (void)viewWillAppear:(BOOL)animated
{
[self shouldAutorotateToInterfaceOrientation: UIInterfaceOrientationLandscapeRight];
[super viewWillAppear:animated];
}
您认为呢?我目前开发的应用程序也有类似的问题。我最终覆盖了更多的旋转方法,以确保我自己的viewcontroller保持纵向 这就是我的工作原理(IOS5+): 如果您是ios5之前的员工,或者您的工作不正常,请查看:
希望你能成功。:) 无法找到此问题的解决方案,因此我最终实现了自己的电子邮件UIActivity子类…您应该制作另一个uinavigationcontroller并从中呈现uiactivityviewcontroller。 在这段代码中(u image)是一个UIImage yo wan共享。 BlankViewController只是一个占位符viewcontroller,您可以在IB中创建它,您还可以使其视图的背景颜色清晰,并执行您想要执行的任何外观更改
__weak CurrentViewController *weakSelf = self ;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[_image] applicationActivities:nil] ;
UIViewController *viewC = [[UIViewController alloc] initWithNibName:@"BlankViewController" bundle:nil] ;
UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:viewC] ;
activityViewController.completionHandler = ^(NSString *activityType, BOOL completed)
{
[weakSelf dismissViewControllerAnimated:NO completion: ^ {
; // Your completion handler
}] ;
};
[self presentViewController:navC animated:NO completion: ^ {
[navC presentViewController:activityViewController animated:YES completion: ^ {
;
}] ;
}];
所以你不想让你的应用程序在横向模式下运行?我不能将项目设置仅更改为纵向,因为我有一个同样支持横向的PhotoViewController。但除此之外,是的,我不希望任何其他视图控制器支持横向。因此,仅在该特定视图中,在willAutorotateOrientation中启用纵向模式。。。。这样邮件控制器就不会旋转…这部分解决了我的问题。我无法在viewC上显示清晰的颜色,因此我最终将CurrentViewController的视图添加到viewC以伪造它
__weak CurrentViewController *weakSelf = self ;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[_image] applicationActivities:nil] ;
UIViewController *viewC = [[UIViewController alloc] initWithNibName:@"BlankViewController" bundle:nil] ;
UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:viewC] ;
activityViewController.completionHandler = ^(NSString *activityType, BOOL completed)
{
[weakSelf dismissViewControllerAnimated:NO completion: ^ {
; // Your completion handler
}] ;
};
[self presentViewController:navC animated:NO completion: ^ {
[navC presentViewController:activityViewController animated:YES completion: ^ {
;
}] ;
}];