2015-06-02 29 views
2

我在通过代码添加UITextField时遇到问题。当我使用内部空视图控制器这个简单的代码都正常工作:当通过代码添加UITextField时不起作用

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

但是我的自定义UIScrollView由于某种原因,它里面是不行的(编辑不启动)。

我试图设置userInteractionEnabledtextField也为superview但这并没有帮助。我不确定如何调试以查看哪些属性阻止了编辑。没有键盘弹出;我无法在模拟器中键入和/或进行选择。另外奇怪的是,其他控件如UIButton的工作完美和接触。

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

po textField.canBecomeFirstResponder()返回true。

+1

单击textField并按下commnd + K. –

+0

键盘未显示(通过Menu或CMD + K)。它表现得像完全禁用。你甚至不能点击它。我开始担心我的布局以某种方式阻止它,但不知道如何调试它。顺便说一句。控制在屏幕上完全可见。 – user3758317

+1

我认为你的UIScrollView是“窃取”水龙头手势,并没有进入UITextField – Icaro

回答

2

我读​​,我觉得这一点:

如果此属性的值为true,滚动视图延迟处理向下触摸手势,直到能够确定滚动是 意图。如果该值为false,则滚动视图立即调用 touchesShouldBegin:withEvent:inContentView :.默认值为 true。

,这从apple documentation:withEvent:方法:

此方法通过调用 pointInside横穿视图层级中的每个子视图的方法,以确定哪个子视图 应该接收的触摸事件。如果pointInside:withEvent: 返回true,则类似地遍历子视图的层次结构 ,直到找到包含指定点的最前面的视图。如果一个 视图不包含该点,则其视图层次结构的分支 被忽略。

1

将scrollView.delaysContentTouches设置为NO。

根据是否意外触摸scrollView中的控件成为问题,您可能必须提出自己的关闭/打开逻辑。

你也可以在不滚动的情况下点击并按住textField。它应该调出键盘,但大多数用户可能不知道这样做。

+0

这不是问题在我的情况,但不知道这个属性,我会更多地使用它。 – user3758317

相关问题