我在文本框中放了一个标签,我想在点击此文本框后将此标签移到左侧。在下面的屏幕截图中,'hello'是一个标签,我想在点击文本框后将其向左移动。
我编写了以下代码,但未调用'textFieldDidBeginEditing'函数
@IBOutlet weak var lblhello: UILabel!
func textFieldDidBeginEditing(numtxt: UITextField!) { //delegate method
lblhello.frame = CGRectMake(98, 156, 42, 21)
}
答案 0 :(得分:2)
我根据之前的评论做出假设,您希望手动指定帧大小,并且不使用约束。
首先,您需要将UITextFieldDelegate
添加到viewController。
在VC类的开头就是这样做的:
class yourViewControllerName: UIViewController, UITextFieldDelegate {
然后您要指定UITextField
的代理人(最有可能在viewDidLoad
)
yourTextFieldName.delegate = self
现在您可以使用textFieldDelegate函数。您正在寻找的可能就是:
func textFieldDidBeginEditing(textField: UITextField) -> Bool {
lblhello.frame = CGRectMake(160, 200, 60, 40)
return true
}
如果一切设置正确,当用户开始编辑lblhello
时,应更改UITextField
的框架。
我经常听到的一个常见问题是人们说这不起作用。是由viewDidLoad()
中指定的标签引起的。大多数情况下,您希望在viewDidLoad()
之前声明标签,否则此类功能无法访问它。
如果您想在之后将其移回原位。除了使用textFieldDidBeginEditing
之外,您的行为几乎与textFieldDidEndEditing
中的相同。
然而,在旁注。我建议习惯使用约束而不是为这样的事情设置框架。