如何区分 UIButton 回调操作的触发事件

2024-02-15

在为 UIButton 定义回调时,我列出了同一操作的多个事件

在目标中我希望能够区分触发回调的事件

[button addTarget:self action:@selector(callback:) forControlEvents:UIControlEventTouchDown | UIControlEventTouchCancel];

-(void)callback:(UIButton *)button
{
  // need to be able to distinguish between the events
if (event == canceled)
{
}
if (event == touchDown)
{
}
... etc
}

您可以更改操作以获取事件参数,如下所示:

[button addTarget:self action:@selector(callback:event:) forControlEvents:UIControlEventTouchDown | UIControlEventTouchCancel];

-(void)callback:(UIButton *)button (UIEvent*)event {
    ...
}

在回调中添加第二个参数将使 Cocoa 将事件传递给您,以便您可以检查触发回调的内容。

EDIT :不幸的是,可可不会向您发送UIControlEvent https://stackoverflow.com/a/6131718/335858,因此弄清楚是什么控制事件导致了回调并不像检查事件类型那么简单。这UIEvent为您提供一系列触摸,您可以分析这些触摸是否是触摸UITouchPhaseCancelled触碰。不过,这可能不是最方便的方法,因此设置多个回调来向您传递正确的类型可能会效果更好:

[button addTarget:self action:@selector(callbackDown:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(callbackCancel:) forControlEvents:UIControlEventTouchCancel];

-(void)callbackDown:(UIButton*) btn {
    [self callback:btn event:UIControlEventTouchDown];
}
-(void)callbackCancel:(UIButton*) btn {
    [self callback:btn event:UIControlEventTouchCancel];
}
-(void)callback:(UIButton*)btn event:(UIControlEvent) event {
    // Your actual callback
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何区分 UIButton 回调操作的触发事件 的相关文章

  • iOS通过AVAssetWriter反转音频

    我正在尝试使用 AVAsset 和 AVAssetWriter 在 iOS 中反转音频 以下代码可以正常工作 但输出文件比输入文件短 例如 输入文件的持续时间为 1 59 但输出文件的持续时间为 1 50 且音频内容相同 void reve
  • 使用 flutter 构建 iOS 项目时出现的问题

    升级 Xcode 15 beta 5 后 无法构建项目 显示错误 Firebase 1 问题 DT TOOLCHAIN DIR 不能用于评估 LIBRARY SEARCH PATHS 请改用 TOOLCHAIN DIR FirebaseAn
  • 将圆角应用于使用 UIBezierPath 创建的圆弧

    我正在研究一个使用 UIBezierPath 创建的圆形进度条 进度条如下图所示 我的问题是 如何使圆弧的边缘变成圆形而不是矩形 我用来绘制圆弧的代码如下 Draw the arc with bezier path int radius 1
  • 滚动高图图表

    这是我的问题 我正在使用phonegap框架来开发一个混合应用程序 并且我需要这个应用程序具有我决定使用highcharts库的图表 问题是 我似乎无法在触摸图表后滚动 至少在触摸图像的选定部分内部时 我想要做的是防止图表发生任何事件 并显
  • 苹果的外部配件(蓝牙)仅适用于 MFI 设备? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的学士论文的目标是通过蓝牙适配器将光串行设备连接到 iPad 目前我正在努力应对苹果的限制 我经常在网上看到我可以使用支持的配置文件 h
  • 领域列表未存储在 Swift 4.2 的发布配置中

    我刚刚构建了我的应用程序的最新版本 并且遇到了一个问题List我的所有领域对象上的 s 都没有被存储 这是一些示例代码 Object public class ReportItem Object objc dynamic var id St
  • Alamofire 仅在 GET 请求上出现请求错误

    我正在努力将我的项目从 AFNetworking 转移到 Alamofire 真的很喜欢这个项目 POST 请求工作得很好 但是 我在尝试发出 GET 请求时收到此错误 这是一些示例代码 class func listCloudCrednt
  • 数组索引超出范围的表视图

    我正在使用数组从数据库读取数据 目前数组中有 8 个项目 我正在尝试制作一个有节标题的表格 目前我有 4 个部分 并且我已正确设置并且它有效 它也可以在第一次运行时运行 但是当我尝试向后滚动时 我发现索引超出了范围 我正在使用 myarra
  • 新的 iTunes 连接界面错误“您必须选择一个版本”

    当尝试将我的新应用程序提交到应用程序商店时 我注意到苹果已经更改了其网站界面 更新元数据和关键字并点击 提交审核 后 我收到错误 您必须选择一个版本 通过谷歌搜索 我没有找到答案 但是 我注意到 构建 标题旁边有一个加号按钮 您必须在其中选
  • Angular/ HTML5 到 iOS WKWebView 通信

    我们正在尝试看看发送信号的最佳选择是什么To iOS WKWebView fromAngular 6 HTML5 项目 任何示例都会很棒 我们想要做的是 我们在 Angular 网页上有一个按钮 单击该按钮应该通知 iOS 执行某些操作 我
  • 将 NSDictionary 保存到文件有任何限制吗

    我想用下面的方法来保存NSDictionary void writeDicToFile NSDictionary dic fileName NSString fileName NSString filePath NSTemporaryDir
  • TypeError:cli.init 不是 React Native 的函数

    在 MacBook Air M1 芯片中运行 npx react native init appName 时 TypeError cli init is not a function at run opt homebrew lib node
  • iOS TestFlight - 外部测试人员未收到新版本通知

    我已经向外部 TestFlight 用户提供了一个应用程序 他们已收到电子邮件并按预期安装了应用程序 他们有版本 1 0 Build 1 不过 我现在已经上传了一个新版本 版本 1 0 版本 2 这已获得批准 在外部测试页面中 我添加并选择
  • 运行时警告 CLSUserDefaults 实施了两次

    在 cocoapod 源中使用 import 语法时 我在 pod 定义的类中看到了与下面类似的警告 但这是一个内部苹果类定义 CLSUserDefaults 我无法控制它 也不会进行子类化 我不知道这是否真的造成了问题 但它不应该发生 o
  • iOS 9.3 出现新的 UIPDFPageRenderOperation 错误?

    我正在向 UIWebView 添加一些 PDF 链接 每次加载并做出滚动手势时 都会收到此错误 objc 910 UIPDFPageRenderOperation 对象 0x14acaca10 过度释放 当已经解除分配时 打断 objc o
  • 如何更改标签栏图标颜色从默认蓝色?

    我有四个标签 我能够将选项卡图标颜色从默认的蓝色更改为红色 或可能任何颜色 并且效果非常好 问题是它仅适用于三个选项卡项目 最后一个选项卡默认为蓝色 下面是代码 我正在编码这个rootviewcontrollerAppDelegate m您
  • 如何在 Cocoa with Core Data 中上传和存储文件?

    我有一个应用程序 我希望能够将文件上传到其中 我可以想象序列化数据 将其放入数组中 然后序列化数组并将其放入核心数据中 但这似乎不太正确 我还可以想象将文件复制到应用程序的支持文件中 获取这些文件的 NSURL 并存储数组或 NSURL 无
  • iOS swift 应用程序启动时出现黑屏

    我有个问题 当我启动我的应用程序时 会看到黑屏几秒钟 然后出现启动屏幕 我的启动画面不是默认的 我使用了视图控制器 因为我的启动画面有一个动画 我搜索了一个解决方案 我得到了这个 在我的闪屏加载 iPhone 之前出现黑屏 https st
  • Eddystone 信标检测问题

    以下是我使用 iPhone iOS 9 检测 Eddystone 的代码 void viewDidLoad super viewDidLoad if CLLocationManager locationServicesEnabled loc
  • Expo eas-cli iOS 构建失败

    我已经使用 React Native 创建了一个应用程序 并尝试通过 Expo 的 eas cli 创建一个 iOS 应用程序商店 跑步时eas build platform ios the Fastlane build failed wi

随机推荐

  • 从 eclipse 运行 Visual VM

    我正在尝试在 Eclipse kepler 中使用 Visual VM 调试 java 应用程序 我正在执行具有选择 Visual VM 作为启动器的主要方法的类 我已经按照中给出的说明配置了 Visual VMhttp blog idrs
  • Chrome 中的 CSS3 过渡不平滑

    我使用 CSS3 过渡根据鼠标悬停时的边距值对某些链接进行动画处理 它的动画效果符合预期 但 Chrome 中的动画并不像其他浏览器 如 Firefox IE10 那样流畅 在 Chrome 中 当我将鼠标悬停在链接上时 所有其他链接都会稍
  • 字符串文字和数组的地址

    int main char str1 Hi str2 Bye printf u u n str1 str1 int arr 5 1 2 3 4 5 printf u u arr arr 这里发生了什么 str and str给出不同的地址和
  • 如何修复 webkit-fake-url 的含义?

    当您尝试复制并粘贴到 Safari Web 浏览器时 浏览器会插入webkit fake url 在 Chrome 中 你可以这样做getAsFile 在剪贴板数据上读取图像 你能用 Safari 做类似的事情吗 不可以 目前无法在 Saf
  • 将 Azure Active Directory 用户添加到 Azure SQL 数据库

    我有一个 Azure SQL Server 可以通过 SSMS 进入其中 我还有一个 Azure Active Directory 其用户名为 电子邮件受保护 cdn cgi l email protection 我想添加此用户以拥有对我的
  • Spark Streaming kafka 偏移量管理

    我一直在做 Spark Streaming 工作 通过 kafka 消费和生成数据 我使用的是directDstream 所以我必须自己管理偏移量 我们采用redis来写入和读取偏移量 现在有一个问题 当我启动我的客户端时 我的客户端需要从
  • 一个通用的Windows应用程序如何拥有多个独立的窗口(如微软的应用程序“照片”)?

    我确实知道如何使用打开其他窗口TryShowAsStandaloneAsync 然而 如果原来的窗口是关闭的 TryShowAsStandaloneAsync失败 为什么 我不知道如何 复活 它 https stackoverflow co
  • libgdx 绘制汉字

    我喜欢在我的应用程序中打印中文文本 1 当我尝试这个时 屏幕将是空的 控制台没有错误 创建方法 FreeTypeFontGenerator gen new FreeTypeFontGenerator Gdx files internal f
  • Golang编写的UDP客户端无法接收来自服务器的消息

    我写了一个Java客户端 它向广播地址发送消息 我还编写了一个Java服务器 它接受所有发送的消息并将消息发送回客户端 现在我想尝试在 Go 中做同样的事情 只是为了获得一些经验 服务器工作正常 正在接收消息并对 Java 客户端做出响应
  • 删除数组中的所有值,同时保持键不变

    我真的必须这样做才能重置阵列吗 foreach array as i gt value unset array i EDIT 这个更有意义 因为前一个相当于 array array foreach array as i gt value a
  • ARC 并释放方法中创建的对象

    我偶然发现了一个在其他地方找不到答案的问题 当我调用一个返回指向稍后使用的对象的指针并最终设置为 nil 的方法时 它仍然分配在内存中 根据 Instruments 我正在使用 XCode 4 6 3 和 iOS 6 1 ARC 已打开 这
  • OpenCv中如何将Mat的一行复制到另一个Mat的列?

    我有两个垫子 A size 1 640 B size 640 480 我想将 A 复制到 B 的第一列 所以我使用A copyTo B col 0 但是这失败了 怎么做 你走在正确的轨道上 Mat col是要使用的匹配工具 但要注意 简单地
  • appjs - 编译成单个可执行文件?

    我花了整晚的时间尝试不同的工具来通过 html5 构建跨平台桌面应用程序 到目前为止 appjs 似乎很完美 我只玩过基于 Windows 可执行文件的演示项目 但我想知道是否有任何指南或教程介绍如何将项目转换为跨平台可执行文件 单个文件
  • 将小端文件转换为大端文件

    如何将小端二进制文件转换为大端二进制文件 我有一个用 C 编写的二进制文件 我正在使用 Java 中的 DataInputStream 读取这个文件 该文件以大端格式读取 我还查看了 ByteBuffer 类 但不知道如何使用它来获得我想要
  • 带有 Eclipse 和 WTP 插件的 Maven webapp 在 Tomcat 中以奇怪的方式部署文件

    我将 Eclipse J2EE 3 5 与 Maven 和 tomcat 结合使用 为了使用 WTP 部署我的 Maven Web 应用程序 我添加了动态 Web 模块方面并更改了项目的 org eclipse wst common com
  • 具有均匀大小内核的图像卷积

    我想执行简单的 2D 图像卷积 但我的内核大小均匀 我应该为我的内核中心选择哪些指数 我尝试在谷歌上搜索答案并查看现有代码 人们通常将其内核居中 这样在新的 0 之前就会多一个样本 因此 如果我们有一个 4x4 内核 则居中索引应该是 2
  • Android 自动翻译工具 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你知道有没有free自动本地化工具目前已退出市场 这将是从我的 android 项目翻译我的 XML
  • 如何使用 laravel 在 DOMPDF 中显示印地语字体?

    这是larval中的pdfblade文件 它给 在pdf文件中标记 section css
  • Django 查询超过 5 小时的对象的日期时间

    我正在尝试为 5 小时以上的小部件编写 Django 查询 但我有点迷失了 小部件模型有一个DateTimeField其中填充了小部件的创建时间 If Widget是模型的名称 它有一个名为的 DateTimeField 属性created
  • 如何区分 UIButton 回调操作的触发事件

    在为 UIButton 定义回调时 我列出了同一操作的多个事件 在目标中我希望能够区分触发回调的事件 button addTarget self action selector callback forControlEvents UICon