UIButton 在 iOS 5.x 中不起作用,在 iOS 6.x 中一切正常

2024-04-17

通过点击主 UIView 上的简单 UIButton,附加视图(子视图)会出现在屏幕中央(以编程方式创建的子视图)。在该子视图上,我有 UIButton 启动 MPMoviePlayer (此代码位于创建子视图的方法内部):

 // Create play button

UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];
[playButton addTarget:self
               action:@selector(wtf)
     forControlEvents:UIControlEventTouchUpInside];

[playButton setTitle:@"" forState:UIControlEventTouchUpInside];
[playButton setImage:[UIImage imageNamed:[self.playButtons objectAtIndex:[sender tag] - 1]] forState:UIControlStateNormal];
playButton.frame = playButtonRect;
playButton.userInteractionEnabled = YES;

此按钮作为子视图添加到同一方法内的此视图中:

[self.infoView addSubview:playButton];

在 iOS 模拟器 6.0 和具有 iOS 6.0 的真实设备中,一切正常,在模拟器 iOS 5.0 和具有 5.0 的设备中,我有一个非常奇怪的行为:仅当我拖动该按钮的区域时,按钮才开始工作,当我单击按钮 - 它称为当用户点击屏幕中的任何位置时调用的方法,就像我的按钮没有出现在屏幕上(但在视觉上它确实出现)。我的目标是为 5.x 制作这个应用程序,所以我尝试寻找这个奇怪问题的答案。

欢迎任何建议!


您是否要添加一个UITapGestureRecognizer到 infoView 或它的任何子视图?

如果是这种情况,则您的手势识别器正在禁止 UIButton 操作。您可以使用 Kevin Ballard 或 cdasher 提供的解决方案这个帖子 https://stackoverflow.com/questions/3344341/uibutton-inside-a-view-that-has-a-uitapgesturerecognizer

您只需要设置具有UITapGestureRecognizer作为该手势识别器的代表(UIGestureRecognizerDelegate)。然后你可以添加以下代码:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    return ! ([touch.view isKindOfClass:[UIControl class]]);
}

你的点击手势识别器应该如下所示:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureAction)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];

希望这可以帮助!

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

UIButton 在 iOS 5.x 中不起作用,在 iOS 6.x 中一切正常 的相关文章

  • Swift - 检查日期是否在下周/下个月。 ( isDateInNextWeek() isDateInNextMonth() )

    我们在日历中有这些方便的功能 let calendar NSCalendar currentCalendar calendar isDateInToday date calendar isDateInTomorrow date 但我缺少那两
  • XCode 7 中的 UI 测试文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想知道 WWDC 2015 上引入的 XCode 7 中的新 UI 测试是否有任何文档 如果没有文档
  • 意外运行 Xcode8 模拟器后,Xcode 8 beta 模拟器无法运行应用程序

    无法启动与模拟器的服务连接 尝试清理应用程序 重新安装它 删除派生数据 重置模拟器设置 重新启动 xCode 我还听说其他人通过重新创建模拟器来解决模拟器的问题 我也尝试过 当我按创建时 我收到完全相同的错误消息 回复中返回错误 连接无效
  • 使用 NSTimer 传递原始参数的正确方法

    我正在使用一个调用此方法的基本计时器 void refresh id obj if obj YES doSomething 我想从代码的某些区域以及计时器调用此方法 NSTimer scheduledTimerWithTimeInterva
  • 如何在我的应用程序中从存折访问通行证?

    我正在创建应用程序 在其中添加并显示从 iOS6 存折应用程序到我的应用程序的通行证 但是当我在模拟器上运行应用程序时 它显示添加的通行证 但是当我在设备上运行相同的应用程序时 它显示我的存折是空的 我已关注iOS6 教程集成存折您的应用程
  • 卸载屏幕外的 UIImageView 图像

    我正在 Ipad 上编写一个应用程序 在我的应用程序的某个时刻 我使用presentModalViewController 呈现一个ViewController 我的 ViewController 是一个 UISScrollView 它采用
  • 如何检测 iPhone 中按下的键盘按键?

    我想检测用户何时按下任何键盘键 仅在键入任何字符时调用的任何方法 而不是在显示键盘时调用的方法 Thanks 您可以在用户每次按键时直接处理键盘事件 Swift 对于文本字段 请使用以下委托方法 func textField textFie
  • iPhone应用程序NSNumber内存泄漏

    我遇到了内存泄漏 但我不知道它从哪里来以及如何修复它 在某些时候 我计算两个位置之间的距离 double calc self getDistance location to otherLocation NSNumber distance N
  • 使用 Xcode 5 在装有 iOS 5.1.1 的设备中运行 iOS 应用程序

    我正在尝试在运行 iOS 5 1 1 的 iPad 上安装 iOS 应用程序 当我使用带有开发配置文件的 Xcode 启动它时 出现以下错误 Xcode 无法安装或启动支持 64 位的应用程序 运行 iOS 6 0 之前版本的设备上的架构
  • 如何给objc_exception_throw添加断点?

    这是布拉德 拉森对此的回答SO https stackoverflow com questions 1093999 stack trace or more info on unhandled exception in xcode iphon
  • UIButton 的图像随滚动视图滚动,但其操作/方法仍保留在原始位置

    我有一个自动滚动的 UIScrollView 我使用 initWithFrame 创建了几个按钮 每个按钮都有一个图像和一个独特的操作 方法 并将它们全部添加到滚动视图中 按钮的图像可以随着滚动视图自动滚动 但是当我单击每个按钮时 这不是我
  • 表视图重新加载部分崩溃

    我有一个包含 4 个部分的表格视图 每个部分有 1 2 个表格视图单元格 第一个单元格有一个 uiswitch 作为附件视图 控制应用程序的颜色主题 在白天模式和夜间模式之间切换 一旦按下开关 就会调用一个函数 更改导航栏的颜色和背景颜色
  • 如何将主菜单添加到 xib

    我从 xib 文件中删除了主菜单 我怎样才能重新创建它而不需要处理它 另一个新创建的xib 我似乎找不到如何告诉 IB 我从对象库添加的菜单实际上是主应用程序菜单 你不能 您过去可以简单地连接mainMenu菜单的出口 但从 Xcode 4
  • 从 UIButton 调用类外部的函数

    我有一个函数 我想在按下按钮时调用它 但与我迄今为止所做的任何事情不同 我希望能够从多个 ViewController 中的任何一个访问它 我不想在每个 ViewController 中重复相同的代码块 我尝试在 ViewControlle
  • 没有名为 objc 的模块

    我正在尝试将 cocoa python 与 Xcode 一起使用 但它总是会出现错误 Traceback most recent call last File main py line 10 in
  • 带有 numberOfLines 和 lineBreakMode 的 UILabel

    我正在开发一个必须同时支持 iOS6 和 iOS7 的项目 我的问题是它在不同的系统上工作不同 我试图创建行数等于 2 的 UILabel 但是当我将其换行模式设置为 NSLineBreakByTruncatingTail 时 它的工作方式
  • Xcode:仅发布适用于 iPhone 的应用程序更新? [复制]

    这个问题在这里已经有答案了 我过去曾为 iPhone 和 iPad 制作过应用程序 但最新的更新仅适用于 iPhone 我换了Target Device Family to iPhone Only并存档和验证 但我收到错误 This bun
  • 如何在iPhone真机上打开数据库sqlite文件?

    我正在通过电缆在我的真实设备中调试应用程序 我有一部 iPhone 6 我想检查我的数据库并使用 sqlite3 操作来查询我的结果 其他问题和教程解释了只能在模拟器中执行此操作 但我使用的是真正的 iPhone 在AppDelegate中
  • 自己应用程序锁屏中的 iPod 控制

    如何为我自己的应用程序使用锁屏 iPod 控件 我尝试了MPNowPlayingInfoCenter 但是如果我设置了信息 它就不会显示在任何地方 不在锁定屏幕上 也不在 AppleTV 上播放 我使用 AVPlayer 来播放我的音频文件
  • iOS 使用presentModalSegue 将数据从viewController2 传递回viewController 1

    我有 viewController1 可以对我的 viewController2 进行模态转场 但是 viewController2 嵌入在导航控制器上 因为我需要那里的导航栏 我已经实现了一个协议 将数据从 viewController2

随机推荐

  • itextsharp 不关闭文件

    我有一些用于 itextsharp 合并 2 个 pdf 文件的代码 在网上某处找到的 合并工作正常 但似乎源文件在全部完成后仍在使用 我想做的是删除我已经合并的第一个文件 通过文件上传上传 并仅保留合并的文件 肯定是执行合并的代码导致文件
  • AWS 上的 Laravel 调度任务无法正常工作

    我正在将 Laravel 应用程序部署到 ElasticBeanstalk 环境 我正在尝试在服务器上的计划任务中运行命令 但它不起作用 这就是我所做的 我在 Kernel php 文件中安排命令如下 schedule gt command
  • Solaris C++ 流输入 >> 运算符和模板的模板

    我有一个编译器选项 我可以在 CC 编译器中使用它来获取以下代码 在 Visual C 中编译良好 std vector
  • Android 和 Java 中的 RSA 加密

    我想用 RSA 加密来加密字符串 我的公钥 私钥已生成并存储在数据库中 在android中 我使用这段代码 public static String encryptRSAToString String text String strPubl
  • 如何在R中识别坐标

    我想确定向量的哪个坐标给我带来最大的价值 举一个简单的例子 假设 x lt c 10 22 20 18 5 最大值是22 但是如何自动识别坐标2具有最大值呢 Thanks which max正如 Hong Ooi 指出的那样 是你的朋友 g
  • 如何通过嵌套正确链接 Promise

    我的节点项目当前包含嵌套回调的侧向圣诞树 以便获取数据并按正确的顺序处理它们 现在我正在尝试使用 Promises 重构它 但我不确定如何正确执行 假设我要获取办公室列表 然后获取每个办公室的所有员工 然后获取每个员工的工资 最后 所有实体
  • 在共享内存进程中分配字符串

    我有一个程序需要在两个进程之间共享字符串 我已经声明了一个包含数组的结构 char 该结构体分配有shmget and shmat在主进程被分叉之前 typedef struct Queue int index char directory
  • 如何将 :first-child 选择器与 Shadow DOM 的 元素一起使用?

    我想从自定义元素的内容中提取第一段 作为摘要 我希望以下内容能够发挥作用
  • ObjectDatasource的Select方法抛出异常如何处理?

    我有一个连接到 ObjectDatasource 的 Select 方法 该方法可能会引发异常 但我不知道如何处理它 问题是我无法控制它 当页面呈现时 ObjectDatasource 直接调用 select 方法 并直接抛出未处理的异常
  • 基础目标、活动目标、部署目标

    我知道这个问题的部分内容有多种不同的形式 但我想确保我的答案是正确的 以下是我的假设和理解 我想在提交之前知道它们是否正确 我的应用程序假定所有操作系统都支持功能 因此我应该 将Active SDK设置为最新 当前为SDK 3 0 将部署目
  • Shapeless 中具有常量返回类型的多态函数

    长话短说 我试图弄清楚如何定义从通用输入到单一类型输出的函数 的背景 这是一个延续映射无形状记录 https stackoverflow com questions 26375886 mapping over shapeless recor
  • VSTO 加载项中的 SetProcessDPIAware

    网上有很多关于通过调用为 Winforms 应用程序设置 DPI 感知的帖子SetProcessDPIAware 或者通过对应用程序的清单进行一些相关更改 例如 如何配置应用程序以在具有高 DPI 设置 例如 150 的计算机上正确运行 h
  • 移动应用程序在后台时的 GPS 位置(使用 ionicframework)

    我需要实现一个应用程序来存储用户从 A 移动到 B 时的旅程 路径 现在 我知道 ionicframework 可以使用 GPS 但是当我的应用程序转到后台时会发生什么 我的应用程序如何继续存储用户位置 这可能吗 有没有我可以使用的插件 请
  • 图表网格线样式

    我正在使用 Visual Studio 2010 中的标准图表库 该图表工作正常 但我无法更改轴网格线样式 这些是已在 Form1 Designers cs 中设置的属性 chartArea3 Name ChartArea1 this ch
  • 当我们尝试将字符打印为浮点数和十六进制时,为什么 printf 的行为不同?

    我尝试在 printf 中将字符打印为浮点数并得到输出 0 这是为什么 还 char c z printf f X c c 给出了一些奇怪的十六进制输出 而当我这样做时输出是正确的 printf X c 为什么会这样呢 The printf
  • 如何在 Microsoft Surface 应用程序中显示 PDF 文档?

    我想在我的 Microsoft Surface 应用程序中显示 PDF 文档 我做了一些搜索 发现了很多可能性 但如果在 Microsoft Surface 中使用 所有这些似乎都有一些缺点 这个有趣的 http www screencas
  • 有类似“Firebug for IE”(用于调试 JavaScript)之类的东西吗?

    我正在尝试修复一些 JavaScript 错误 在 Firefox 中工作时 Firebug 使调试这些问题变得更加容易 但是当代码在 Firefox 上运行正常但 IE 却抱怨时 你该怎么办 您还可以查看IE 开发者工具栏 http ww
  • 使用 GOOGLE MAP API 的简单 Android 程序

    尝试使用 Google 地图 这是我使用 google Map API 的第一个程序 由于日志错误 我无法执行 我需要纠正自己的地方 MainActivity java public class MainActivity extends A
  • 如何将 {1,0} 与正则表达式匹配

    or 0 1 will match必要时采取一些模式 但现在我想反过来做 Say 不匹配如果需要的话 解决办法是什么 后面加个问号就可以了 0 1 as in 0 1 并且它会更喜欢匹配零次而不是一次 问号使它 不贪婪 这意味着它不会尽可能
  • UIButton 在 iOS 5.x 中不起作用,在 iOS 6.x 中一切正常

    通过点击主 UIView 上的简单 UIButton 附加视图 子视图 会出现在屏幕中央 以编程方式创建的子视图 在该子视图上 我有 UIButton 启动 MPMoviePlayer 此代码位于创建子视图的方法内部 Create play