- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个纵向模式的 UITabBarViewController
,我在横向模式下推送一个 modalViewController
。当我按下模式时,旋转变为横向,但当我关闭它时,方向仍然是横向而不是恢复为纵向。
代码:
用于横向模式的 CustomUINavigationController
:
- (BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}
- (NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}
uitabbar Controller
- (BOOL)shouldAutorotate
{
if ([self inModal]) {
UINavigationController *nav = (UINavigationController *)self.modalViewController;
return [[nav.viewControllers lastObject] shouldAutorotate];
} else {
return NO;
}
}
-(NSUInteger)supportedInterfaceOrientations
{
if ([self inModal]) {
UINavigationController *nav = (UINavigationController *)self.modalViewController;
return [[nav.viewControllers lastObject] supportedInterfaceOrientations];
} else {
return UIInterfaceOrientationPortrait;
}
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
if ([self inModal]) {
UINavigationController *nav = (UINavigationController *)self.modalViewController;
return [[nav.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
} else {
return UIInterfaceOrientationPortrait;
}
}
- (BOOL)inModal
{
if (self.modalViewController && [self.modalViewController isKindOfClass:[UINavigationController class]]) {
return YES;
} else {
return NO;
}
}
如果我将 shouldRotate 设置为 YES,我会得到一个错误:* 由于未捕获的异常“UIApplicationInvalidInterfaceOrientation”而终止应用程序,原因:“支持的方向与应用程序没有共同的方向,并且 shouldAutorotate 返回 YES。尽管我已经在 UISupportedDeviceOrientations 中设置了两个方向。
最佳答案
我认为你的问题是由这一行引起的(你的代码中有两次):
return UIInterfaceOrientationPortrait;
我目前正在尝试做某事。类似于您尝试实现的目标,并在这里问了我的问题:iOS 6 auto rotation issue - supportedInterfaceOrientations return value not respected
您的代码的问题在于,这两种方法不返回界面方向,而是返回一个掩码,该掩码在其位中编码了允许或首选方向的组合。
试试这个:
return UIInterfaceOrientationMaskPortrait;
据我所知,
UIInterfaceOrientationPortrait
被映射到 0,因此被解释为界面方向的空集(无)。
关于iOS 6 在 dismissModalViewController 后恢复方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544008/
我有一个显示内容的详细 View 。我用一个按钮模态地呈现另一个 View : [self.viewController presentModalViewController:helpViewCont
我一直在寻找解决我的问题的方法,但到目前为止还没有找到任何东西。 我有一个带有一堆 UIViewController 的 UINavigationController(如果相关的话,这都在 Tabba
我有一个使用 presentModalViewController:animated: 调用的 MPMoviePlayerViewController。当出现错误(无互联网连接)时,我想将其关闭。但是
我有两种看法。设置非常简单,只是为了玩转相机胶卷。 一个 View 将使用以下方式调出相机胶卷: [self presentViewController:self.imagePicker animat
我有一个纵向模式的 UITabBarViewController,我在横向模式下推送一个 modalViewController。当我按下模式时,旋转变为横向,但当我关闭它时,方向仍然是横向而不是恢复
我这里有一个非常奇怪的问题。我正在使用当前模态视图 Controller 在导航栏中放置的 ViewController 顶部显示我的 MFMailComposer ViewController。 [
我在我的应用程序中使用了一个 tabbarcontroller 并且还想使用一个登录 View 。我有一个处理登录过程的登录 Controller 。我正在以模态方式呈现 loginView。 [se
我在取消 MFMailComposeViewController 时收到 SIGABRT 错误,正好在 dismissViewController 中,不起作用 我在 UINavigationCont
放置自定义动画代码以关闭 modalviewcontroller 的正确位置在哪里。 我尝试将以下内容放入 viewdiddisappear、viewwilldisappear 中,但行为不正确。有什
这是我的问题。我有一个使用 PresentModalViewAnimated 显示的登录屏幕。一旦用户登录,它就会被关闭。 在登录屏幕上我有一个 iAd 但是当它被关闭时我得到这个错误。 ADBann
我有一个 tabBarController,我通过将以下代码放入其中来添加它: AppDelegate.h: ... UITabBarController IBOutlet *tabB
那么,有什么线索吗?我不得不使用 [self dismiss modalviewcontroller 来关闭模态视图。有趣的事实:当关闭 tabbarcontroller 时,我仍然可以使用对 par
我有一个名为“MainView”的 View Controller ,它会调用 [self presentModalViewController:playView animated:NO]; 插入“P
好吧,这已经困扰我一段时间了...... 我已经检查过了,所有其他问题/答案都与非 ARC 项目有关。 每当我展示 MFMCvc 并快速取消消息时,我都会在 iPhone 上收到 Thread1:EX
我是一名优秀的程序员,十分优秀!