UITextField在加载所有内容后设置Text

时间:2014-09-22 12:30:09

标签: ios iphone xcode uiviewcontroller swift

好吧,标题可能有点误导,但我不确定如何正确描述它。但无论如何,我们走了:

我有UIViewControllerUITabBarController内),其中包含UITextField。将此ViewController推送到导航堆栈时,我必须使用UITextField进行一些工作:

我将String放在UITextField中并处理它们(再次,这一切都发生在ViewController加载时(当前在viewDidLoad()方法内))。为了处理它们,我需要计算String在UITextField内占据的Rectangle。

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发生之后调用的方法。

不确定这是否有意义,但我使用Swift和XCode 6(两者的最新版本)

由于

编辑:

显然tagTextField.beginningOfDocument为nil,而tagTextField不是nil。有人想知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

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