按下 return 时功能不 运行

Function not running when return pressed

我有一个文本字段,当在文本字段中输入内容并按下键盘上的 "return" 时,键盘应该隐藏。但事实并非如此..

这是我使用的代码:

import UIKit

class EditTableViewController: UITableViewController, UITextFieldDelegate {

var product: Product?


@IBOutlet weak var productImageView: UIImageView!
@IBOutlet weak var ProductDescriptionTextView: UITextView!
@IBOutlet weak var productTitleLabel: UITextField!



override func viewDidLoad() {
    super.viewDidLoad()
    println("loaded")
    productImageView.image = product?.image
    productTitleLabel.text = product?.title
    ProductDescriptionTextView.text = product?.description
}

override func viewWillDisappear(animated: Bool) {
    product?.title = productTitleLabel.text
    product?.description = ProductDescriptionTextView.text
    product?.image = productImageView.image!
}

 func textFieldShouldReturn(textField: UITextField) -> Bool // called when 'return' key pressed. return NO to ignore.
{
println("return")
return true
}
}

在控制台中我得到 "loaded",但是当我在文本字段中按 return 时,我没有得到 "return"

怎么会?

在您的 viewDidLoad 方法中,您必须添加:

productTitleLabel.delegate = self

并像这样更新您的 textFieldShouldReturn

func textFieldShouldReturn(textField: UITextField) -> Bool // called when 'return' key pressed. return NO to ignore.
{
    productTitleLabel.resignFirstResponder()
    return true
}

并且当按下 return 键时它会隐藏你的键盘。

您忘记将 UITextField 的委托设置为您的视图控制器(自己) productTitleLabel.delegate = self - 另请注意,您应该正确命名变量以避免混淆(productTitleTextField 而不是 'Label' 后缀)

或者,除了以编程方式执行此操作外,您还可以在故事板中执行此操作,方法是按住 Ctrl 键从 textView 拖动到故事板中的视图控制器,然后 select 在弹出窗口上进行委托。

然后,让你的视图控制器符合UITextFieldDelegate协议:

class EditTableViewController: UITableViewController, UITextFieldDelegate {
....
    func textFieldShouldReturn(textField: UITextField) -> Bool {
        if textField == productTitleLabel {
            textField.resignFirstResponder()
        }
        return true
    }
}