2014-09-22 64 views
2

好吧,标题可能有点误导,但我不确定如何正确描述它。但无论如何,这里我们去:UITextField在加载所有内容后设置文本

我有一个UIViewController(在UITabBarController)其中包含UITextField。当推到导航堆栈这个视图控制器我得做的UITextField一些工作:

我把字符串的UITextField内,并再次对其进行处理(这一切发生时,视图控制器负载(目前viewDidLoad()方法内))。为了处理它们,我需要计算字符串在UITextField内占据的矩形。

var pos1 = tagTextField.positionFromPosition(tagTextField.beginningOfDocument, inDirection: UITextLayoutDirection.Right, offset: 0) 
var pos2 = tagTextField.positionFromPosition(tagTextField.endOfDocument, inDirection: UITextLayoutDirection.Right, offset:0) 
var rectForButton = tagTextField.firstRectForRange(tagTextField.textRangeFromPosition(pos1, toPosition: pos2)) 

确切地说,这里是我的问题。当视图被加载时这样做时,tagTextField包含文本,但不显示文本,因此rectForButton没有任何宽度。

我对这个问题的想法是,我必须在某个时候运行这个(我试过viewWillAppear()viewDidAppear()等,但没有奏效)。

任何人有任何想法如何解决这个问题?基本上总结一下,我需要一个在涉及UIViewController的事情发生后调用的方法。

不知道这是否任何意义的,但我用斯威夫特和XCode的6(包括最新发布的)工作

感谢

编辑:

显然tagTextField.beginningOfDocument是零,而tagTextField不是零。任何人有任何想法如何解决这个问题?

+0

为什么不在完成视图控制器本身的所有准备工作后调用方法来设置文本?它是完全可控的,当你将文本设置为UITextField时,只需在完成所有设置后执行。 – Sandeep 2014-09-22 12:35:07

+0

是的,但是当我将它设置在viewDidLoad,viewDidAppear等内部时,文本仍然不会立即显示。我不知道为什么。 – c2programming 2014-09-22 12:42:30

+0

好吧,显然我使用旧的测试版而不知道它(我安装了最新版本,但它打开旧的测试版,现在我至少得到一个错误,某事是零)不知道,但如果这是解决方案我的错误 – c2programming 2014-09-22 12:52:37

回答

2

您的文本框是否来自界面构建器?你可以在viewDidLayoutSubviews函数中试试它。

+0

我会尝试。谢谢 – c2programming 2014-09-23 19:21:24

+0

我有不同的问题-UITextField.beginningOfDocument在viewDidLoad,viewWillAppear中返回nil,但在viewDidLayoutSubviews中都可以。 感谢您的回答 – 2015-06-12 06:47:51

相关问题