设备向上/向下和侧向倾斜会触发方向通知

2023-12-05

我有一个针对 iOS7 的应用程序构建,其中 UIViewController 应该支持横向左右和纵向 - 纵向上下颠倒,其他 ViewController 应该仅支持横向左右方向。我已使用通知来通知方向更改并相应地刷新子视图。我还在检查 UIDevice 当前的旋转方向。这我面临的问题是,即使是轻微的摇晃或倾斜也会触发方向改变方法这刷新了视图。我什至当时就得到了奇怪的视图框架。我用开始生成设备方向通知 and 结束生成设备方向通知分别在 viewDidLoad 和 viewWillDisappear 上。有什么方法可以限制仅设备旋转吗?

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceDidRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; // adding observer to notify when device rotates.

deviceDidRotate:即使是我真正想避免的小倾斜或晃动也会被调用。

UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
        //Ignoring specific orientations
if (orientation == UIDeviceOrientationFaceUp||orientation == UIDeviceOrientationFaceDown     ||orientation == UIDeviceOrientationUnknown)
 {
    return;
 }
if ((UIDeviceOrientationIsPortrait(orientation) || UIDeviceOrientationIsLandscape(orientation))) {
            [UIViewController attemptRotationToDeviceOrientation];
}

为了避免倾斜效应,我使用这个委托方法

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [self handleViewArrangementWithCurrentOrientation];
}

如何在轻微摇动或倾斜时跳过通知触发。实际上,我在方向更改时的视图刷新上有一个动画,它会产生闪烁的效果及其频繁。我需要删除这个。请大家帮忙。


(比我的评论更完整的答案)

处理视图控制器旋转时,不能使用device来自 [UIDevice currentDevice].orientation 的旋转——为您提供设备的瞬时方向。它不一定匹配界面方向,并且可以快速来回改变。

The 界面方向由响应者链处理。 UIViewController 在发生变化时会收到消息。这些消息在方向稳定时发生,并且不会快速波动。

处理旋转:

  • 首先,在 iOS 8 文档中,查看“处理视图旋转”UI视图控制器

  • iOS8 之前版本,覆盖didRotateFromInterfaceOrientation在你的视图控制器中。你的视图控制器收到这个 当设备旋转时。那时你处理轮换。

  • 从 iOS8 开始,使用过渡 协调员机制。使用视图控制器的transitionCoordinator 属性设置转换协调器。

或者,如果您完全设置了自动布局约束,则可以完全避免处理旋转。看 (http://annabd351.github.io/SquareCropViewController)这是视图控制器的一个很好的例子,它几乎不需要任何代码就可以处理一些棘手的旋转场景。

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

设备向上/向下和侧向倾斜会触发方向通知 的相关文章

  • 如何在 swift 中以编程方式使用坐标打开地图应用程序?

    我想在地图应用程序中打开纬度和经度 我尝试了这段代码HERE https stackoverflow com questions 12504294 programmatically open maps app in ios 6 func g
  • 无法识别的选择器调用静态 iOS 库中的类别方法

    我正在使用一些第三方软件来帮助使用 Xcode 4 3 2 编写 iPad 应用程序 该软件是开源的 通常经过设置 因此其代码将与开发人员为应用程序编写的任何代码一起编译 因为我在很多地方使用该软件 所以我决定将其构建为 iOS 模拟器的静
  • TableView 中图像的大小不正确

    我正在使用来自 URL 的图像创建一个表视图 但图像不会调整到所有视图的大小 直到我将其按入行中 知道为什么会发生这种情况吗 这是一个自定义的表格视图 我的代码是 UITableViewCell tableView UITableView
  • IOS 上图像的加密/解密

    我们正在使用加密 解密和 UIIMAGE 如果我们加密和解密 UIIMAge 而不保存到 iphone 画廊中 它工作正常 但如果我们加密 保存到画廊中 将 加密的图像 加载到应用程序中 然后解密它效果不好 我们使用这个函数来加密 解密 保
  • CIAdditionCompositing 给出不正确的效果

    我正在尝试通过平均其他几个图像来创建图像 为了实现这一点 我首先将每个图像变暗 其系数等于我平均的图像数量 func darkenImage by multiplier CGFloat gt CIImage let divImage CII
  • Xamarin.Forms DataTemplateSelector 不适用于 iOS(未调用构造函数)

    我正在膨胀数据模板选择器 如下所示
  • 当自定义子视图处理触摸时防止 UITableView 滚动

    在我的 iOS 应用程序中 有一个 UITableView 其中一个单元格中包含一个自定义子视图 该单元格是一个交互式视图 它处理触摸事件 touchesBegan touchesEnded touchesMoved 以更新自身 问题是 当
  • 如何从 iOS 应用程序检测不安全的 wifi 网络

    我想检测我的应用程序中是否存在不安全的 wifi 网络 是否有任何公共 iOS API 可以实现相同的目的 没有记录的 API 可以获取该信息 如果您的应用程序需要通过网络发送和接收敏感数据 您通常应该假设没有安全连接
  • CMSampleBufferSetDataBufferFromAudioBufferList 返回错误 12731

    我正在尝试捕获应用程序声音并将其传递给 AVAssetWriter 作为输入 我正在设置音频单元的回调以获取 AudioBufferList 问题始于将 AudioBufferList 转换为 CMSampleBufferRef 它总是返回
  • Swift:无法为“[UIViewController]”类型的值添加下标?

    我试图弄清楚如何在 Xcode 7 iOS9 上的 Swift 中解决此问题 并且我也遇到此错误 无法为 UIViewController 类型的值添加下标 索引类型为 Int 任何建议表示赞赏 谢谢 My code func indexP
  • iOS 11 浮动 TableView 标题

    有一个应用程序包含多个部分 展开 时每个部分有几行 折叠 时没有 每个部分都有一个部分标题 使用以下子类重用它们UITableViewHeaderFooterView等等 到目前为止一切顺利 然后在 iOS 11 中 我使用了可视化调试器
  • 如何将 UIImageView 裁剪为自定义形状

    用户是否可以在该位周围画一条虚线 圆圈 UIImageView他们希望裁剪到 然后为UIImageView调整大小到这些点 这有点像 Photoshop 中的套索 选取框效果 更新 从 iOS 8 x 开始 UIImageView 提供了m
  • 你如何在react-native中实现捏合缩放?

    我一直在研究 PanResponder 我当前的工作假设是 我将检测是否有两个触摸正在向外移动 如果是 则增加元素大小onPanResponderMove功能 这似乎是一种混乱的方法 有没有更顺畅的方法呢 如果您只需要简单的捏缩放功能 只需
  • ios Vision VNImageRequestHandler方向问题

    我正在尝试使用相机通过相机检测脸部VNImageRequestHandler iOS 愿景 当我在横向模式下用相机指向照片时 它会检测到面部 但方向模式相反 let detectFaceRequestHandler VNImageReque
  • UICollectionReusableView 方法未被调用

    我希望我的部分位于UICollectionView有一个带有图像的标题 我已按照以下步骤操作 在故事板中 分配了一个标题作为我的附件UICollectionView 给它一个标识符 创建了一个子类UICollectionReusableVi
  • 如何获取 UITableView 中的所有单元格

    假设我有一个包含多行的 UITableView 我想在某个时间点将所有 UITableViewCells 作为 NSArray 获取 我努力了 tableView visibleCells 但这种方法有一个问题 我无法拥有当前不在当前屏幕中
  • 如何以编程方式使用资产目录图像的切片信息?

    我的项目中曾经有一个图像 我会像这样加载它 UIImage image UIImage imageNamed image name resizableImageWithCapInsets UIEdgeInsetsMake 10 0f 10
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • 如何在 Swift 中创建 UIAlertView?

    我一直在努力在 Swift 中创建 UIAlertView 但由于某种原因我无法得到正确的语句 因为我收到此错误 找不到接受提供的 init 重载 论点 我是这样写的 let button2Alert UIAlertView UIAlert
  • 使用 nib 作为带有 nib 类的表节标题

    我想创建一个加载 nib 文件并将其设置为标题 UIView 的节标题 这个 nib 文件还将有一个关联的类 其中插座和操作连接到 因此我想像平常一样使用 nib 加载该类 我在网上搜索并找到了几个类似的答案 但我找不到任何适合我的答案 经

随机推荐

  • j2me - 内存不足异常,它与最大堆或 jar 大小有什么关系吗?

    我目前正在开发一个用于接受订单的应用程序 在提出问题之前 让我向您介绍我的应用程序基本功能的一些详细信息 用户登录后 应用程序要做的第一件事就是从网络服务读取数据 产品 价格和客户 以便用户可以离线工作 一旦用户获得了所有必要的数据 他们就
  • 将连接的单词串分解为单个单词的快速方法

    假设我有这个字符串 hellohowareyou 有没有一种快速的方法将其分成单独的单词 所以最终结果是hello how are you 我可以想到几种方法 但它们会非常慢 首先我需要根据字典识别每个字母 看看哪些字母组成一个单词 并且可
  • 如果提交消息以给定字符串开头,则忽略 Jenkins 作业

    如果提交消息以给定字符串开头 我想忽略运行 Jenkins 作业 我尝试添加 其他行为 和 轮询忽略某些消息的提交 IE 如果提交消息以 doc 开头 我想忽略该作业 在我的世界中这意味着不运行该作业 我已经尝试了几个在线正则表达式匹配器
  • 如何将 SQL 与 PHP 分开?

    遵循鲍勃叔叔的建议干净的代码 我希望我的 PHP 代码中没有 SQL 目前 我正在使用准备好的语句 并将数据库访问代码分解到模型类中 我最初的想法是将 SQL 分解为单独的 SQL 文件 然后在运行时加载它们 由于这涉及更多的磁盘 IO 我
  • 如何在 ASP.NET Core 中启用 CORS

    我正在尝试在 ASP NET Core Web API 上启用跨源资源共享 但我陷入困境 The EnableCors属性接受policyName类型的string作为参数 Summary Creates a new instance of
  • next.js npm 模块注释给出错误

    这是我的错误 10 03 56 049 components navbar js 10 03 56 049 13 33 Warning img elements must have an alt prop either with meani
  • C++ 类何时在堆栈上实例化?

    我想澄清一下在堆栈上实例化类时会发生什么 当 C 类在堆上实例化时 MyClass myclass new MyClass 创建 MyClass 类型的指针 并通过 new MyClass 在同一行实例化该类 像这样拉伸它 MyClass
  • 使用 GDK 在 Google Glass 上接收 UDP 数据

    对于从 Google Glass 上运行的应用程序接收 UDP 数据有什么建议吗 我需要与现有系统集成 该系统向本地子网进行 UDP 广播 Glass 将位于同一子网中 并且在 Glass 上运行的应用程序只需侦听端口上的 UDP 数据包
  • 无法找到 EL RI 表达式工厂

    我在我的应用程序中遇到以下异常 com sun faces config ConfigurationException 看来JSP版本的 容器早于 2 1 并且无法 定位 EL RI 表达式 工厂 com sun el E xpressio
  • vue如何从子组件访问v-model

    我的孩子组件是这样的
  • PHP 一秒发送多个号码短信请求

    我正在尝试使用 API 发送短信 它几乎每秒发送一条短信 但我想在一秒钟内使用 PHP 中的多线程 pthreads 发送多条短信 这怎么可能 或者我怎样才能至少从我的一端异步发送多个短信请求到API服务器 Threads Class cl
  • Matlab 中 IFFT 的缩放问题

    我正在 Matlab 中研究 IFFT 将其应用于高斯 根据维基百科表 傅里叶变换对将是 F w sqrt pi a exp w 2 4a 频率 以及 f t exp at 2 及时 我修改了代码上一个问题加上 Cris Luengo 执行
  • PHP 在字符串中动态引用变量

    我的表单中有多个 PHP 变量 number1 number2 number3 and so on 我想在循环内部动态引用它们以从中检索信息 但不确定如何动态引用静态变量 前任 for i 1 i lt 10 i The first num
  • 如何在 MS Access 2007 或 MS SQL Server 2005 中通过 SQL 将字段转换为行

    我有一个旧的 MS Access 2007 表 其中包含 52 个字段 一年中的每周 1 个字段 代表历史销售数据 加上实际年份的一个字段 我想将此数据库转换为更传统的时间 值列表 有谁知道如何在不编写带有 52 个以上显式参数的查询的情况
  • Net::SSH 与非 UNIX/Linux 主机?

    我正在尝试使用 Net SSH 库来登录和管理支持 ssh 的主机 TL1 是一种电信设备 我似乎能够成功登录 但是当我尝试 ssh exec 某些内容时 它会中止并表示无法执行命令 这是我的简单代码 require net ssh Net
  • .NET Core API 中的自定义授权过滤器

    我想在使用我的核心 api 访问任何数据之前对用户进行授权 所以我尝试使用 JWT 身份验证 我在使用 api 登录用户时成功生成了令牌 并将该令牌保存在会话中的客户端 现在每当用户想要使用 api 访问任何数据时 我都会将该令牌在标头中发
  • 如何通过 HTTP 从 Internet 检索文件?

    我想从 Internet 下载文件 乍一看 InternetReadFile 似乎是一个很好且简单的解决方案 事实上 好得令人难以置信 事实上 经过一番挖掘 我开始发现它实际上存在很多问题 人们在使用这段代码时抱怨各种各样的问题 出现问题的
  • 如何在打印函数中定义变量?

    我是这个领域的新手 我正在尝试解决一个问题 不太确定实际上是否可能 我想在显示器上打印一些信息以及用户的一些输入 以下工作正常 gt gt gt print Hello input tellmeyourname tellmeyourname
  • 无法找到要实例化的界面控制器类“InterfaceController”

    每次运行项目并尝试导航到另一个屏幕时 我都会收到此错误 Unable to find interface controller class HelpInterfaceController to instantiate 我正在正确使用我所知道
  • 设备向上/向下和侧向倾斜会触发方向通知

    我有一个针对 iOS7 的应用程序构建 其中 UIViewController 应该支持横向左右和纵向 纵向上下颠倒 其他 ViewController 应该仅支持横向左右方向 我已使用通知来通知方向更改并相应地刷新子视图 我还在检查 UI