Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 按下return键时功能未运行_Ios_Swift_Keyboard_Textfield - Fatal编程技术网

Ios 按下return键时功能未运行

Ios 按下return键时功能未运行,ios,swift,keyboard,textfield,Ios,Swift,Keyboard,Textfield,我有一个文本字段,当在文本字段中键入内容并按下键盘上的“return”时,键盘应该隐藏起来。但事实并非如此 以下是我正在使用的代码: import UIKit class EditTableViewController: UITableViewController, UITextFieldDelegate { var product: Product? @IBOutlet weak var productImageView: UIImageView! @IBOutlet weak var

我有一个文本字段,当在文本字段中键入内容并按下键盘上的“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
}
}
在控制台中,我得到“已加载”,但当我在文本字段中按return时,我没有得到“return”


为什么?

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

productTitleLabel.delegate = self
并更新您的
textfield,返回如下内容:

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

当按下返回键时,它将隐藏键盘。

您忘记将UITextField的委托设置为视图控制器(self)
productTitleLabel.delegate=self
-还应注意正确命名变量以避免混淆(
productTitleExtField
而不是“标签”后缀)

或者,您可以在序列图像板中通过Ctrl键将文本视图拖动到序列图像板中的视图控制器,并在弹出窗口中选择“委派”,而不是通过编程方式执行此操作

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

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

如果在故事板中没有设置文本字段委托,则需要设置文本字段委托。如果
textfield中没有任何代码,则应返回隐藏键盘的
函数。这不是自动发生的。如果这是你想要的,你需要把它藏起来。