iPhone iOS 如何使 UIRotationGestureRecognizer 和 UIPinchGestureRecognizer 一起工作来缩放和旋转带有子视图的 UIView?

2024-04-12

我正在我的应用程序中实现拖/放/调整大小/旋转标签。到目前为止,除了UIRotationGestureRecognizer手势。更具体地说,它不适用于UIPinchGestureRecognizer手势。

通常,这两个手势会竞争两个手指触摸,因此我并行运行它们。以下是手势识别器调用的 2 个方法。

当做旋转手势时,视图疯狂旋转围绕它的中心,它的高度和宽度变化如下:高度变成宽度,宽度慢慢变成高度。最终,景象消失了。

在视图中,我有另一个自动调整大小的视图。通常,捏合手势也会自动调整子视图的大小,但在这种情况下,具有自动调整大小蒙版的子视图会消失。子视图具有高度和宽度弹簧以及左/顶部支柱。

我究竟做错了什么?如何使用手势调整和缩放 UIView 的大小?

所有委托方法和连接均已正确设置。我需要了解如何处理识别器应用缩放和旋转的顺序。

//makes 2 gesture recognizers behave together
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    return YES;
}

- (IBAction)handleRotationFrom:(id)sender {
    NSLog(@"Gesture rotation %.1f", rotationGestureRecognizer.rotation);

//attempt to continuously rotate the label, starting with a remembered rotation    

    float rotation = atan2(activeCompanionLabelView.transform.b, activeCompanionLabelView.transform.a);
    NSLog(@"existing rotation %.1f", rotation);

//    rotation = rotation<0?(2*M_PI)-fabs(rotation):rotation;
    rotation +=rotationGestureRecognizer.rotation;

    NSLog(@"*** gesture rotation %.1f sum: %.1f, saved: %.1f",rotationGestureRecognizer.rotation, rotation, activeCompanionLabelView.savedRotation);
    activeCompanionLabelView.transform = CGAffineTransformMakeRotation((rotation));
    activeCompanionLabelView.savedRotation = rotation;
}

- (IBAction)handlePinch:(id)sender {
    NSLog(@"pinch %.2f", pinchGestureRecognizer.scale);

//resize, keeping the origin where it was before

    activeCompanionLabelView.frame = CGRectMake(activeLabelContainerFrame.origin.x, activeLabelContainerFrame.origin.y, activeLabelContainerFrame.size.width*pinchGestureRecognizer.scale, activeLabelContainerFrame.size.height*pinchGestureRecognizer.scale);    



}

如果你想要两个gestureRecognisers并行(同时)运行您的view应该实施<UIGestureRecognizerDelegate>.

另外,你应该让它成为两者的代表gestureRecognizers.

rotationGestureRecognizer.delegate=self;
pinchGestureRecognizer.delegate=self;

而且你还应该实施shouldRecognizeSimultaneouslyWithGestureRecognizer: method:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {

    return YES;
}

注意:如果您有更多则这两个gestureRecognisers在你的view你必须在这个方法中添加一些身份检查。

EDIT:

刚刚找到 Ole Begemann 关于此主题的文章:iOS 上注重细节的手势识别 http://oleb.net/blog/2012/01/gesture-recognition-on-ios-with-attention-to-detail/

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

iPhone iOS 如何使 UIRotationGestureRecognizer 和 UIPinchGestureRecognizer 一起工作来缩放和旋转带有子视图的 UIView? 的相关文章

  • 在 UIWebView 中隐藏键盘

    有没有办法让 UIWebView 关闭所有关联的输入控件 例如键盘 选择器 还没有在带有选择器的网络视图中尝试过 但这绝对可以消除键盘 theWebView endEditing YES
  • 设置 TableView setEditing 时无法选择 UITableViewCell

    我希望能够选择多行 如下所示的默认邮件应用程序 我有一个名为编辑的按钮 可以调用 self myTableView setEditing YES animated YES 编辑按钮成功显示单元格左侧的圆圈 如上所示的邮件应用程序 但是 当我
  • 如何消除禁用的 UIButton 的灰色外观

    我有一个 UIButton 我希望它处于禁用状态时与处于正常状态时看起来完全相同 现在它看起来有点灰色 不要使用enabled属性或setEnabled NO方法 而是使用 myButton setUserInteractionEnable
  • CALayer 抗锯齿不如 UIView 抗锯齿

    我一直在尝试使用 CALayer 制作圆形绘图的动画 一切都运行良好 但问题是 绘制的圆不够抗锯齿 它的边界有点太粗糙 或者如果使用光栅化则模糊 抗锯齿已启用 还尝试过 边缘抗锯齿遮罩 kCALayerLeftEdge kCALayerRi
  • 如何使用 Objective-C 协议

    我需要将 Picker 选择的值继承到其他地方 我正在尝试下面的代码 但空值即将到来 请检查我哪里出错了 我必须继承在中传递的字符串值PickerView 请检查代码 选取器1 h import
  • 如何从通讯录 ios 以编程方式编辑电话号码值

    我正在尝试在 iOS 中以编程方式替换特定联系人的特定电话号码 获取联系人表单地址簿 我不知道为什么我无法保存新的电话号码并刷新地址簿以显示更改 我正在这样做 BOOL changeContactPhoneNumber NSString p
  • Ios Swift制作字体切换粗体、斜体、boldItalic、正常而不改变其他属性

    我很惊讶 在 Swift 中简单地为现有字体设置粗体和斜体是如此复杂 我只是想通过在字体类上使用以下方法来简化事情 我希望将以下方法添加到已设置字体系列和字体大小的现有字体中 我需要保留这些并仅更改以下内容 setBold Shud 保留斜
  • 使用 Unity 在 iOS 应用程序上发送电子邮件时出错

    我正在开展一个学校项目 我正在尝试记录从我统一制作的游戏中存储的数据 我的问题是我想通过电子邮件将数据发送到应用程序 一切正常 电子邮件与数据一起发送等 但是当我将应用程序构建到 iOS 设备时 它不会发送电子邮件 我在 Unity 中没有
  • 使用 xctool 运行单个 KIWI 规范

    有没有人能够成功地将 KW SPEC 变量传递给 xctool 我正在尝试使用以下命令来运行单个 KIWI 规范https github com kiwi bdd Kiwi wiki Kiwi FAQ q how do i run a si
  • 如何获取通讯录图片数据的裁剪框?

    AddressBook 框架提供 ABPersonCopyImageData 用于获取每个地址簿条目的联系人图像 这对于图像数据来说非常有用 但用户也可以出于框架目的调整图像的大小和裁剪图像 当我获取图像数据时 我得到的是完整图像 而不是裁
  • 斯威夫特/iOS。从导航堆栈中删除一些视图控制器

    这是我想做的 但我不确定这是否是正确的方法 所以请给我建议如何去做 我有初始 VC 和导航 VC 我从中推送第一个 VC 从中推送第二个 VC 接下来我介绍 来自第二个 VC 的 NavigationController 第三个 VC 现在
  • ios 如何存储用户输入的详细信息并取回?

    How to Store用户输入的详细信息和Get it Back在ios中 我有以下关注TextFields UserName Email Re enter Email id Phone State Address Localityand
  • iOS AFNetworking downloadProgressBlock 计算返回负数

    我正在使用 AFNetworking 下载使用第三方类解析的数据 我之前曾多次使用 AFNetworking 执行类似的操作 但由于某种原因 当我调用 downloadProgressBlock 并进行计算以与我的进度条一起使用时 数字返回
  • 每次 UIScrollView 释放时都会发生内存泄漏

    在我的应用程序中 我有一个滚动视图和四个表格视图 每次拖动然后释放时 我都会泄漏 48 字节 这确实很重要 正如您所看到的 两组泄漏都有相同的来源 有人见过这样的泄漏吗 Edit 1 当我单击泄漏旁边的箭头时 我会得到泄漏的以下信息 您所看
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 当视口设置为 user-scalable=no 时,iOS/移动 Safari 仍然会缩放?检查辅助功能设置!

    这个特定的 Mobile Safari 看似不可能且未记录 问题让我今天坚持了很长一段时间 当我弄清楚它时 我正要在这里发布一个有关它的问题 问题 虽然我设置了我的 iPad 网络应用程序仍然允许手动缩放 在浏览器中捏合 但只能在我的 iP
  • 如何使用libxml解析来解析xml数据

    这是一个我想使用libxml解析来解析的xml结构 我如何获取 campaign 标签的属性值 即ID对于 图像 标签 即url and size 如果我使用这些值 我可以提取 code 标签和 name 标签的值 static const
  • 如何判断handleOpenURL是在应用程序启动时调用还是在应用程序运行时调用?

    由于事件的顺序略有不同 具体取决于这两个场景中的哪一个正在进行 我希望能够区分出区别 有什么建议么 你不应该使用handleOpenURL因为它已被弃用 相反 使用application openURL sourceApplication
  • iTunes Connect 中缺少应用内购买部分

    我有一个应用程序处于准备提交状态 我还有该应用程序的应用程序内购买项目 上周我将它们链接到我的应用程序并提交以供审核 周末 开发商拒绝了它 现在我想重新提交修复后的版本 但 IAP 部分完全丢失 我怎样才能让它再次可见 我遇到过同样的问题
  • 一旦 webapp 添加到主屏幕,是否可以强制 iphone/ipod 更新 apple-touch-icon?

    我使用 safari 的所有推荐链接和元标记创建了一个网络应用程序 例如

随机推荐

  • SDL 2.0源码中有1.3吗?

    我正在研究 SDL 2 0 源代码 注意到其中有另一个声称是 1 3 版本的 SDL 文件夹 我对它很感兴趣 因为它有 android iphone 和其他一些的源代码 稳定版本 1 2 似乎有很大不同 我的问题是这样的 SDL 维基链接
  • 基于原型的 OO 与基于类的 OO 相比有哪些优点?

    为什么基于类的 OO 如此受欢迎 而不是基于原型的 OO 他们在学校教授后者吗 尽管 Javascript 是基于原型的 但大多数人主要是在功能上使用它 或者通过尝试模拟基于类的系统的框架 我知道Sun已经做了一些研究Self http r
  • 游戏开发者的 Flash 性能:本机渲染 VS BitmapData 帧缓冲区

    我开发了一款 2D 射击游戏很多物体 and 激进的滚动 问题 哪种方式更好 选择 1 使用原生 Flash 渲染 从 Bitmap 派生游戏对象 使用现有的 x y 宽度 高度 bitmapData 将所有对象添加为子 UI Compon
  • Win7 上的 ASP.Net 中的 EventLog 权限失败

    我有一个 ASP Net 应用程序 net 3 5 SP1 在 Win7 中运行 在登录过程中 ASP Net 登录控件中的某些内容导致写入事件日志中的安全日志 这听起来对我来说可以接受 问题是该应用程序似乎没有执行此操作的权限 有错误的是
  • LINQ 结果在 for 循环结束时发生变化

    当对数据源执行一组 LINQ 查询时 我使用的是 LINQ to SQL 但这里也只使用List
  • 如何将 docx 转换为 json 以用于 firebase

    我在 Docx 中存储了引号 但我想将其转换为 JSON 因此我不必在 firebase 中手动添加每个单独的引号 这里是 file 这是我的数据库的样子以及我想如何在 firebase 中存储报价的 SS 现在 如何将 docx 文件转换
  • 未捕获的错误:没有模块:用户 Angularjs

    这是这个的后续问题如何使用rails服务器在Angular中获取索引数据 https stackoverflow com questions 18312689 how to fetch index data in angular using
  • Python,在我的 python 代码中出现了意外的关键字参数 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我的 python 代码一直给我这个错误 这是我尝试调用的函数 其下面是调用它的代码 from sys import stdout
  • 等待异步函数在地图内完成

    考虑以下简单的代码 await Promise all arrayOfObjects map async obj gt return await someAsyncFunctionOnObj obj 我的问题是 对象数组 and 对象上的一
  • cocos2d中的水效果

    我想在我的应用程序的背景层上有水效果 该效果不需要对触摸或任何东西做出反应 它只需要稍微晃动图像即可 CCWaves3D 看起来不错 但当我运行它时 边缘周围留下了令人讨厌的黑色伪影 类似CCShaky3D CCLiquid 将我的应用程序
  • 当超过两行时如何纠正 ConstraintLayout TextView 重叠

    我遇到约束布局问题 其中一个文本视图中到达第二行的文本不会向下推被限制在其下方的另一个文本视图 直到该行的中间 我用三个文本视图构建了一个简单的布局 第一个文本视图位于左侧并具有设定的宽度 第二个位于它的右侧 位于它与其父级之间 第三个位于
  • OS X Mavericks 安装 rvm 警告

    在终端中运行时 curl L https get rvm io bash s 它似乎工作正常 但在最后的升级说明中它说 WARNING You have profile file you might want to load it to d
  • 获取 HealthKit 中每个日期的总步数

    获取每天记录的总步数的最佳方法是什么HealthKit 通过 HKSampleQuery 的方法 initWithSampleType 见下文 我可以使用以下命令设置查询的开始和结束日期NSPredicate 但该方法每天返回一个包含许多
  • sqlite 退后一步

    我发现向前滚动结果集的常用方法是使用 sqlite3 step while sqlite3 step statement SQLITE ROW do something with the row 有没有办法向后滚动结果集 例如后退一步或使用
  • 代码签名:我应该签署哪些文件类型以及为什么?

    我有一个全新的代码签名证书 并且一直想知道我应该签署哪些文件 显然 应该对 setup msi 包和所有运行提升的 exe 进行签名 以避免出现 未知发布者 警告 但我应该对其他可执行文件进行签名吗 不需要提升的 exe dll 或 oxc
  • 如何排除 Android Eclipse 项目的“/res”文件夹中的文件

    有什么方法可以排除 res 文件夹下的某些文件不被 Android 构建器处理吗 我有几个使用 Eclipse 构建的 Android 项目 我将这些项目上传到我们的版本控制系统中 问题是 版本控制向每个文件夹添加了一些 project p
  • CSS 自动宽度布局,无边距:auto

    这可以用 css 实现吗 我可以用 javascript 来管理它 它基本上是一个margin auto效果 但我想要每个边距有不同的背景 所以我正在寻找 固定宽度 中心 div 两侧具有自动宽度的 div 如果有意义的话 问题更直观 ht
  • Typescript 限制最大数组长度

    基本上我想要一个最大长度为 4 的数组类型 我很容易无法找到如何在打字稿中实现此检查 有人可以帮我吗 像这样的事情 const a item1 item2 item3 item4 item5 gt array has a maximum l
  • 如何从 python 将无穷大传递给 redis?

    我正在使用 redis py 并希望将 inf 和 inf 与 ZRANGEBYSCORE 一起使用 我尝试使用 inf 的字符串和浮点来执行此操作 但它们返回一个空集 我怎样才能做到这一点 EDIT 我尝试执行以下命令 redis Str
  • iPhone iOS 如何使 UIRotationGestureRecognizer 和 UIPinchGestureRecognizer 一起工作来缩放和旋转带有子视图的 UIView?

    我正在我的应用程序中实现拖 放 调整大小 旋转标签 到目前为止 除了UIRotationGestureRecognizer手势 更具体地说 它不适用于UIPinchGestureRecognizer手势 通常 这两个手势会竞争两个手指触摸