通过代码

时间:2015-06-02 10:03:38

标签: ios swift uitextfield

我遇到通过代码添加UITextField的问题。当我在空视图控制器中使用这个简单的代码时,一切正常:

let textField = UITextField(frame: CGRect(x: 10, y: 10, width: 200, height: 20))
textField.text = "test"
scrollView.addSubview(textField)

但在我的自定义UIScrollView内,由于某种原因,它无法正常工作(编辑不要开始)。

我尝试为userInteractionEnabled设置textField,也为superview设置{但是这没有用。我不知道如何调试以查看阻止编辑的属性。没有键盘弹出;我无法在模拟器内键入和/或进行选择。同样奇怪的是其他控件如UIButton工作得很完美并且接触到了。

可以看出,我没有添加委托,但它在没有它的空UIViewController上工作得非常好。

po textField.canBecomeFirstResponder()返回true。

2 个答案:

答案 0 :(得分:2)

我正在阅读apple documentation,我发现了这个:

  

如果此属性的值为true,则滚动视图会延迟处理触摸手势,直到它可以确定滚动是否为   意图。如果值为false,则立即调用滚动视图   touchesShouldBegin:withEvent:方法inContentView :.默认值为   真。

这来自apple documentation

  

此方法通过调用遍历视图层次结构   pointInside:withEvent:每个子视图的方法来确定哪个   子视图应该会收到触摸事件。如果pointInside:withEvent:   返回true,然后类似地遍历子视图的层次结构   直到找到包含指定点的最前面的视图。如果一个   view不包含该点,它的视图层次结构的分支是   忽略。

答案 1 :(得分:1)

将scrollView.delaysContentTouches设置为NO。

您可能需要提出自己的逻辑来关闭/打开它,具体取决于是否意外触摸scrollView内的控件成为问题。

您也可以点按并按住textField而不滚动。它应该调出键盘,但大多数用户可能不会知道这样做。