按下 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
}
}
我有一个文本字段,当在文本字段中输入内容并按下键盘上的 "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
}
}