ios - 1% 的时间未处理 UIButton 事件 : who should I blame in my responder chain?

标签 ios model-view-controller uibutton first-responder

我的应用程序有时会忘记应该由哪个响应者处理触摸事件。

我的情况:

  • XIB 文件定义了 3 个 View :
    • 一个 View 作为文件所有者的 View
    • 2 个以编程方式添加到 View 层次结构的额外 View
  • 其中一个 subview (SubviewA) 有一个 UIButton,配置为在“Touch Up”时将 myAction: 选择器发送到 FirstResponder检测到内部”事件
  • SubviewA 知道如何处理 myAction:

99% 的时间,一切都很好。当用户点击按钮时,SubviewA 会处理 myAction: 消息,一切正常。但时不时地,用户提示按钮“卡住”,实际上我自己复制了几次,但未能找到一个明确的场景来使其按需发生。

到目前为止我的调查是:

  • 当点击按钮没有任何反应时:
    • 我的按钮检测到点击,因为它在按下时突出显示
    • myAction: 未在 SubviewA 上调用
    • UI 的其余部分保持响应

我所说的代码是一些我试图修复的遗留代码。让 View 响应其 subview 之一的事件对我来说听起来像是一种奇怪的架构。到目前为止,我一直使用 File's Owner 来处理触摸事件,因此我指出 Responder Chain 是导致错误的理想人选。但是我找不到为什么!根据我的理解,由于按钮不知道如何处理消息并且没有附加 View Controller ,它应该将它转发到它的 super View (ButtonA,它知道如何处理它)!

我的问题是:

  • 知道错误可能来自哪里吗? (响应者链?)
  • 关于 View 是应该自己处理其按钮行为还是应该由 View Controller 来处理,有什么意见吗?

编辑: 我有一个关于如何修复错误的想法:将按钮操作直接连接到 SubviewA 而不是在 Interface Builder 中使用 FirstResponder。我发布这个问题的原因是想了解为什么响应者链有时不工作。

最佳答案

你能不能让 SubviewA 成为 FirstResponder 然后在完成后放弃它?

关于ios - 1% 的时间未处理 UIButton 事件 : who should I blame in my responder chain?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9417844/

相关文章:

cocoa-touch - 为 MVC 设计模式组织 iOS 项目

c# - 获取 datacontext.ExecuteQuery 返回的动态对象的属性

swift - 如何更改点击的一对按钮的颜色?

ios - 如何处理弱指针和强指针?

iphone - iOS Touches 开始

ios - 将 .ipa 文件上传到 iTunes Connect 时出现 "Import Error"

ios - 表格单元格不显示数组的项目

iphone - MVC,了解模型的 View

swift - 如何防止表格单元格在 Swift 中继承

iphone - ios 将 float 属性添加到 UIButton 或派生