UIButton事件在1%的时间内没有得到处理:我的责任链应该归咎于谁?

Dir*_*nry 5 model-view-controller uibutton first-responder ios

我的应用程序有时会忘记响应者应该处理触摸事件的内容.

我的情况:

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

99%的时间,一切都很顺利.当用户点击按钮时,SubviewA负责处理该myAction:消息,一切都很好.但是,从时间到时间,用户抱怨按钮"冻结"了,我实际上转载它自己几次没有能够找到一个明确的情况下做到这一点的需求.

我到目前为止的调查是:

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

我正在谈论的代码是我正在尝试解决的一些遗留代码.有一个视图响应其子视图的事件听起来像一个奇怪的架构给我.到目前为止,我一直使用文件所有者来处理触摸事件,所以我指出响应者链是理解错误的理想选择.但我找不到原因!根据我的理解,由于按钮不知道如何处理消息并且没有附加视图控制器,它应该将其转发到其超级视图(ButtonA,它知道如何处理它)!

我的问题是:

  • 关于bug可能来自哪里的任何想法?(响应链?)
  • 关于视图是否应该自己处理其按钮行为或视图控制器应该如何处理的任何注释?

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

Dan*_*Dan 1

你可以让 SubviewA 成为FirstResponder,然后在完成后放弃它吗?