我有一个UIView(MyView)的子类,该子类具有一些UITextField作为子视图。MyView实现了UITextFieldDelegate协议,以便在单击文本字段时得到通知。运行良好。现在,我需要将文本字段放置在某种“容器”中,以便能够通过UIView动画淡入和淡出此容器(及其所有子级)。因此,我创建了一个UIView(MySubview),使其成为MyView的子视图,并将所有文本字段置于其中。动画效果很好,但不再调用UITextFieldDelegate。我认为这是因为文本字段不再是MyView的直接子代。 还有其他方法可以解决这个问题吗?

更新

我做了一个小版本的代码,也许这有助于发现问题: 通用标签

有帮助吗?

解决方案 2

我将回答我自己的问题,以防万一有人碰到同样的问题-很难想象有人犯了这样愚蠢的错误:

我正在将标签容器的框架设置为self.bounds。但是MyViewController正在使用CGRectZero框架创建MyView!在添加容器的同时,我做了该更改以支持动画。因此,我认为该问题与视图层次结构有关。真可惜!!!

无论如何,感谢所有帮助者,尤其是Madhumal Gunetileke,他的回答使我朝着不同的方向观看。

其他提示

然后,我尝试写出您的代码,它对我来说很有效。您可以尝试更改以下几项;

  • 之所以无法编辑textField,是因为您向textFieldShouldBeginEditing方法返回了NO。将其更改为是。
  • 尝试将您的textField定位(如果可能的话),使其比所提供的略低。另外,无论如何,20px对于适当的textField来说太小了,至少应设为40px。如果在手机中打开状态栏,则位于0,0处的20px textField可能会完全隐藏。
  • 为您的textField设置borderStyle。据我所知,这对于textField的显示和良好交互非常重要。(例如,textField.borderStyle= UITextBorderStyleRoundRect)

    手指交叉!:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top