3

我在文本框中放置了一个标签,我想在点击此文本框后将此标签移到左侧。在以下屏幕截图中,“你好”是一个标签,我想在点击文本框后将其向左移动。

在此处输入图像描述

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

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

1 回答 1

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改用了。

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

于 2015-03-23T09:03:30.407 回答