【问题标题】:ios ipad uibutton irresponsive after keyboard showios ipad uibutton在键盘显示后无响应
【发布时间】:2013-11-24 07:34:05
【问题描述】:

我的问题是按钮显示但没有响应。甚至是文本字段。在下图中,文本字段 1 和 2 以及按钮 1 和 2 没有获得触摸事件。但是上面的其他文本字段得到了触动。当点击文本字段显示键盘时会出现问题。但在键盘出现之前,所有文本字段都处于活动状态,并且按钮是响应式的。

UI 层次结构是,

UIScrollView (cyan)
|---UIView (blue)
    |---  All other views (text field, buttons) 

起初青色和蓝色视图大小相同。所有文本字段和按钮视图都在 UIView 中绘制。所以当键盘出现时,我会调整视图的大小。虽然早期的 UIView 和 UIScrollview 有相同的区域,但是在显示键盘后,蓝色的 UIView 变小了,但它的子视图(按钮,文本字段)在它的区域之外。它们被显示,但没有接收到触摸事件。

蓝色视图(UIView)的大小对我来说并不重要。我至少需要按钮和文本字段获得触摸事件。如果我禁用 UIView(蓝色视图)的自动调整大小,那么它可以解决问题。

我的困惑是组件已显示但为什么不响应事件?

【问题讨论】:

    标签: ios ipad uiscrollview autoresize


    【解决方案1】:

    您的问题是蓝色视图。如果子视图大于其父视图,则子视图的其他部分(不在父视图上)不会响应触摸事件。当键盘出现时,您应该改进调整大小。

    【讨论】:

    • 所以你的意思是,即使按钮显示在屏幕上,但由于它们在其容器视图之外,它不会接收到触摸事件?
    • 是的,完全正确。您需要改进调整大小的逻辑以增加容器视图的大小。
    【解决方案2】:

    超级视图框架是实现触摸事件的一个依赖因素。您必须以正确的方式制作超级视图框架,在您的情况下为蓝色视图。 在 superview 框架内,触摸事件可以是正确的。

    将剪辑子视图属性设置为蓝色视图的“是”,然后您可以看到视图框架内的所有内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-09
      • 2012-09-13
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多