强制方向改变有时不起作用

2024-01-08

当在我的应用程序中按下某个按钮时,视图应该将方向从纵向更改为 景观。当用户回来时,视图控制器应该变回纵向。但 有时方向不会改变或使用了错误的视图框架。

这是我的代码

-(void)btnSignClicked:(CustomSignButton *)btn {
    isSignButtonClicked = true;
    if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_0) {
        NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
        [[UIDevice currentDevice] setValue:value forKey:@"orientation"];
    }
    else
    {
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
    }
    selectedWaiverId = btn.customTag;

    SignatureView *obj = [[SignatureView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) delegate:self]; // Most of time got size (568,320) but some time i got (320,568), Don't know why
    [self.view addSubview:obj];
}

#pragma mark - SIGNATUREVIEW DELEGATE
-(void)removeSignatureView:(SignatureView *)signatureView {
    isSignButtonClicked = false;

    if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_0)
    {
        NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait];
        [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; // Some time not changed the orientation are view remaining in landscape 
    }
    else
    {
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES];
    }

    [signatureView removeFromSuperview];
    signatureView = nil;

}
#pragma mark
#pragma mark - Rotate screen
-(UIInterfaceOrientationMask)supportedInterfaceOrientations
{
    if (isSignButtonClicked == true)
    {
        return UIInterfaceOrientationMaskLandscapeRight|UIInterfaceOrientationMaskLandscape;
    }
    else
    {
        return UIInterfaceOrientationMaskPortrait;
    }
}
- (BOOL)shouldAutorotate
{
    return YES;
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if (isSignButtonClicked == true)
    {
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
    }
    else
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }

}

UPDATE

有时viewWillTransitionToSize方法没有被调用,所以我也集成了这个通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

但有时这也不起作用。


添加到 AppDelegate.m 文件或任何基本控制器文件中

 @implementation UINavigationController (Orientation)


- (UIInterfaceOrientationMask) supportedInterfaceOrientations
{

    return [(UIViewController*)[[self viewControllers] lastObject] supportedInterfaceOrientations];

}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return [(UIViewController*)[[self viewControllers] lastObject] preferredInterfaceOrientationForPresentation];
}

- (BOOL) shouldAutorotate
{
    return [(UIViewController*)[[self viewControllers] lastObject] shouldAutorotate];
}

@end

现在将 ViewController 对象放入 UINavigationController 对象中并推送视图控制器。

EX.

UINavigationController *obj=[[UINavigationController  alloc] initWithRootViewController:_yourViewCtrlObj];

[self presentViewController:obj.....]; 

or
[self.navigationController pushViewController:obj animated:YES];

在所有视图控制器中设置所需的方向。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制方向改变有时不起作用 的相关文章

  • 为什么在授予用户权限时,UIUserNotificationType.None 在当前设置中返回 true?

    我正在编写一种方法来检查当前用户设置是否包含某些通知类型 当检查当前设置是否包含 UIUserNotificationsType None 时 无论授予权限还是拒绝权限 它都会返回 true 有谁知道这是为什么吗 func register
  • Parse.com 和 Facebook 登录,运行无限循环

    我将 Parse 和 Facebook iOS SDK 都更新到了最新版本 当我尝试使用 Facebook 登录时 我的应用程序崩溃了 从调试器中我可以看到它正在无限循环中调用 3 4 个方法 我的登录代码如下所示 void openSes
  • 从命令行调试 iOS 应用程序构建

    我正在通过命令行构建 iOS 应用程序 但在调试它时遇到问题 如果我使用 XCode 进行构建 它会让我在设备上 构建和调试 而不会出现任何问题 但现在 我不知道如何使用 gdb 在设备上启动它并逐步执行它 如果我尝试 添加自定义目标 可执
  • Objective-c 中的块递归

    当执行涉及 Objective C 块的递归时 我在 iOS 应用程序中收到 EXC BAD ACCESS 信号 这是简化的代码 void problematicMethod FriendInfo friendInfo onComplete
  • 在带有 Storyboard 的 XCode 4 中以模态方式推送视图时,出现“对开始/结束外观转换的不平衡调用”警告

    在网上进行了一些研究但没有成功后 我来这里向您询问有关我的警告的问题 实际上 我有一个带有导航控制器的视图 V1 我想在 V1 完成加载时推送模态视图 V2 所以我用performSegueWithIdentifier方法 我正在使用故事板
  • 所需框架与静态库

    构建现代框架 https developer apple com videos play wwdc2014 416 says 每个应用程序都有自己的自定义框架副本 https stackoverflow com a 15262463 242
  • 添加自定义过渡会导致 xib 加载错误的屏幕尺寸

    我正在尝试向具有 xib 的 UIViewController 添加自定义过渡 我尝试了几种方法 但它们都有相同的问题 视图显示的屏幕尺寸错误 我当前的示例基于以下教程 使用 Swift 在 iOS 中自定义 UIViewControlle
  • iOS 中的构建对象文件扩展名是什么?

    当我在项目中构建java对象类时 将创建带有 class扩展名的构建文件 并且人类不可读 快速构建文件怎么样 example car java gt build gt car class 构建后会是什么 car swift gt build
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 错误:更改核心数据模型后架构armv7的重复符号

    我有一个使用核心数据框架的应用程序 我工作得很好 我刚刚更改了数据模型 向一个实体添加一个属性 当我尝试构建它时 出现错误 duplicate symbol OBJC METACLASS AccountFolder in Users XXX
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here
  • Google 地图 API -> OpenGLES 崩溃

    日志是从 Crashlytics 粘贴的 对于许多用户来说 崩溃经常发生 据我所知 它与设备 iOS 版本无关 我在我的代码中找不到任何错误 这似乎是纯粹的库问题 是 Google 地图 API 错误吗 我可以做些什么来修复它 或者我应该在
  • 指定访问组时出现 KeychainItemWrapper 错误

    相当长一段时间以来 我一直在使用 KeychainItemWrapper 的 ARC 版本成功读取和写入私有钥匙串项目 我现在正在努力将我的 iOS 应用程序转换为使用共享访问组 以便我的 2 个共享相同应用程序前缀的应用程序可以访问钥匙串
  • 在 UIImage 顶部绘制透明圆圈 - iPhone SDK

    我在尝试找出如何在 UIImageView 中的 UIImage 顶部绘制透明圆圈时遇到了很多麻烦 谷歌给了我线索 但我仍然找不到有效的例子 有没有人知道的例子可以证明这一点 最简单的方法就是创建一个半透明的方形 UIView 然后将其图层
  • 在现有 iOS 应用程序中集成 React-native(0.40.0) 后找不到 Yoga/Yoga.h 头文件

    在我的 Swift iOS 应用程序中集成 React Native 后 我无法构建 yoga Yoga h file cannot be found 我已经浏览了文档 查看了react native github页面 检查了类似问题的SO
  • 拖动时获取MKAnnotation的坐标

    我正在根据用户添加的注释的位置创建一条路径 MKPolyline 我想允许用户通过拖动引脚来更改路径 我目前可以做到这一点 但 MKPolyline 不会更新 直到引脚被放下 我实施了 void mapView MKMapView mapV
  • 避免 UIImage 的 imageNamed - 内存管理

    我正在经历这个链接 http akosma com 2009 01 28 10 iphone memory management tips 我遇到了一个点避免 UIImage 的 imageNamed 出于什么原因我们应该避免这种情况 它会
  • 如何反转 CGPath 的点顺序

    我想画一个圆圈 并用它打出字母 为此 我需要顺时针抚摸圆圈 逆时针抚摸字母 这一切都很好 但是当我使用 Core Text 获取字母路径时 我不知道如何从本质上反转该路径 不是镜像或旋转或任何东西 这很简单 我希望点笔画顺序是逆时针的 这实
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的

随机推荐

  • PHP 致命错误:调用布尔值上的成员函数 format()

    崩溃于 PHP 致命错误 调用布尔值上的成员函数 format 但对于其他日期效果很好 格式错误 这两个示例都不起作用 因为您有多个错误 您忘记了第二个参数Datet
  • 跳出范围解决方案以及不同指令如何影响范围

    我一直在与错误 jmp out of range 作斗争 很多时候我需要从代码的不同部分运行子程序 就像在 C 中运行函数一样 我发现代码的两端都需要跳转到同一个地方 但两者却无法到达那里 解决这个问题的办法是什么 我还注意到 PRINT
  • 使用自定义模式呈现处理通话状态栏

    问题 我在演示时注意到一些奇怪的行为UINavigationController 使用根视图控制器 自然已经推送 UIViewControllerAnimatedTransitioning打电话期间 如果通话状态栏已启用after当导航控制
  • 更改单个 DataGridView 列中所有单元格的填充

    我的 C 应用程序中有一个 DataGridView 使用设计器 我设置了AlternatingRowsDefaultCellStyle以及DefaultCellStyleDGV 本身的属性 这两种样式的填充值为0 0 5 0 我没有为任何
  • Three.js 使用正交相机将 2D 映射到 3D

    我有一个使用正交相机的 Three js 场景 this camera new THREE OrthographicCamera this width 2 this width 2 this height 2 this height 2 1
  • 表单中的背景颜色

    我试图为 HTML 表单标签设置背景颜色 但它不起作用 我以为这是一个简单的任务 form background color 000 padding 10px 您可以使用内联样式
  • iPhone,如何检测拍摄图像时的方向

    有什么方法可以检测拍摄图像时手机的方向吗 我在 UIView 上有一个 UIImageView 我正在使用 UIImagePicker 来拍照或从相机胶卷中选择一张照片 但是 如果图像是在横向模式下拍摄的 我想检测到这一点并调整图像视图的大
  • 异步 - 留在当前线程上?

    我读过埃里克 利珀特的article http blogs msdn com b ericlippert archive 2010 10 29 asynchronous programming in c 5 0 part two whenc
  • 设置 Vaadin 会话超时参数

    我正在使用 Vaadin 7 1 7 但我不知道如何设置session timeout参数 例如 1 分钟 据我所知 Vaadin 7 x x 不会产生web xml 它用 VaadinServletConfiguration注释 但似乎没
  • 如何使用 browserify 包含非节点模块

    我想在应用程序中使用依赖项管理 并遇到了 require js 和 browserify 我无法决定选择哪一个 这将是一个决定性因素 任何人都可以告诉我如何将定制的 javascript 模块 非节点模块 包含到我的 js 中 我发现 br
  • Android 上的自定义鼠标指针

    当使用现代版本的 Android Honeycomb 或更高版本 时 如果硬件合适 则支持显示鼠标指针 例如 在 ASUS Transformer 或 Toshiba AC100 笔记本电脑上 是否有任何 API 允许在这些设备之一上运行的
  • 如何使用 Mocha 和 Nock 重新测试相同的 URL?

    我正在使用 Mocha Chai Sinon Proxyquire 和 Nock 对于这个特定的测试场景 针对该场景提出这个问题 希望多次测试完全相同的 URL 每次都在一个单独的测试中 期望得到不同的响应 例如 没有商家 Feed 的响应
  • “漂白”文件中的这个 perl 行有什么作用?

    我有一些已被 漂白 的 perl 文件 不知道它是否来自 ACME Bleach 或类似的东西 我对 Perl 不太熟悉 我想了解启动文件的单行代码如何解码后面的空格 lt lt y r n d pack b eval die 文件的其余部
  • Spring security ldap:找不到元素“ldap-authentication-provider”的声明

    遵循 spring security 文档 http static springsource org spring security site docs 3 0 x reference ldap html http static sprin
  • 如何使用 ng-click 获取 DOM 元素

    我有一些元素 例如
  • add_axes 和 add_subplot 之间有什么区别?

    在之前的一个answer https stackoverflow com a 43283905有人推荐我使用add subplot代替add axes正确显示轴 但搜索文档我无法理解何时以及为何应该使用这些函数之一 谁能解释一下这些差异吗
  • Python 中 numpy 整数数组的整数和元素的类型提示

    我有一个函数应该接受带有整数值的参数 比方说 def print age in another format age int gt float 但是 此代码适用于以下环境 numpy被大量使用 因此用户可能会编写如下内容 a np arra
  • 构造函数中冒号后面的变量[重复]

    这个问题在这里已经有答案了 我仍在学习 C 并试图理解它 我正在查看一些代码并看到 point3 float X float Y float Z x X y Y z Z lt what is this used for 构造函数参数旁边的
  • 在 jQuery 中获取下一个兄弟的最简洁的方法

    http jsfiddle net mplungjan H9Raz http jsfiddle net mplungjan H9Raz 经过对 next a 等的相当多的测试 我终于找到了一个有效的 我只是想知道为什么 next a 没有
  • 强制方向改变有时不起作用

    当在我的应用程序中按下某个按钮时 视图应该将方向从纵向更改为 景观 当用户回来时 视图控制器应该变回纵向 但 有时方向不会改变或使用了错误的视图框架 这是我的代码 void btnSignClicked CustomSignButton b