在swift中向左移动标签

时间:2015-03-23 06:01:04

标签: iphone swift textbox xcode-6.2

我在文本框中放了一个标签,我想在点击此文本框后将此标签移到左侧。在下面的屏幕截图中,'hello'是一个标签,我想在点击文本框后将其向左移动。

enter image description here

我编写了以下代码,但未调用'textFieldDidBeginEditing'函数

@IBOutlet weak var lblhello: UILabel!
func textFieldDidBeginEditing(numtxt: UITextField!) {    //delegate method
    lblhello.frame = CGRectMake(98, 156, 42, 21)
}

1 个答案:

答案 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中的相同。

然而,在旁注。我建议习惯使用约束而不是为这样的事情设置框架。