ios - 在禁用的 UIButton 上接收点击事件的最简单方法是什么?

标签 ios cocoa-touch uibutton gesture-recognition

我在表单上有一个 UIButton,当表单不完整时,我想将其置于禁用状态。但是,我仍然希望能够检测用户是否在禁用状态下尝试按下按钮,以便界面可以让用户知道表单上的某些必填字段尚未填写(并且可能滚动到该字段并指出它,等等)。

似乎没有任何直接的方法可以做到这一点。我尝试简单地将 UITapGestureRecognizer 附加到 UIButton 但当按钮处于禁用状态时它没有响应。

如果可能,我想避免子类化 UIButton,除非这是唯一的方法。

最佳答案

创建一个回退按钮。把它放在主按钮后面。将其背景和文本颜色设置为 [UIColor clearColor] 以确保它不会显示。 (你不能只将它的 alpha 设置为 0,因为这会使它忽略触摸。)在 Interface Builder 中,回退按钮应该在 subview 列表中的主按钮上方,如下所示:

buttons in subview list

给它与主按钮相同的框架。如果您使用的是自动布局,请同时选择主按钮和后备按钮并创建约束以保持所有四个边都相等。

当主按钮被禁用时,触摸将传递到后备按钮。启用主按钮后,它将捕获所有触摸,而后备按钮将不会接收任何触摸。

将回退按钮连接到一个操作,以便您可以检测它何时被点击。

关于ios - 在禁用的 UIButton 上接收点击事件的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25754367/

相关文章:

ios - UITableViewCell 中的 UIView 位置问题 - 已更新

ios - 火猴应用程序。需要数据更新

ios - 取消完成处理程序 (iOS)

ios - 舍入 UIViews 的好模式?

ios - 删除以编程方式添加的 UIButton

ios - 自定义 UIView 子类中的 UIButton 不触发操作事件

ios - 从 UIbutton 读取数字

ios - UIButton: 当isHighlighted = true时,我只能通过滑动手指来调用一个函数

ios - 如何在 UITextView 中默认显示键盘?

iOS NSURLSession 使用自定义委托(delegate)处理数据任务的完成