【发布时间】:2015-11-04 01:05:01
【问题描述】:
我有一个带有自定义单元格和文本字段的表格视图。如下图。
自定义单元格的类:
import UIKit
protocol TextFieldTableDelegate{
func retornaTexto(sender: TextFieldTableViewCell, texto: String)
}
class TextFieldTableViewCell: UITableViewCell, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var label: UILabel!
var delegate: TextFieldTableDelegate?
override func awakeFromNib() {
super.awakeFromNib()
self.textField.delegate = self
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
self.delegate!.retornaTexto(self, texto: textField.text!)
return true
}
}
这个委托方法永远不会被调用
func retornaTexto(sender: TextFieldTableViewCell, texto: String) {
print(texto)
codigoAreaSelecionada = texto
}
问题是,在我触摸文本字段后,它会打开一个数字键盘,但是当我触摸它外部(在背景上)时,它不会关闭。
我试过这个Swift - How to dismiss number keyboard after tapping outside of the textfield,但它破坏了视图中的所有其他内容。
编辑:我让数字键盘键盘隐藏并显示将其添加到我的 viewController,但它不会触发委托方法。
var tapRecognizer : UITapGestureRecognizer?
func keyboardWillHide(notification: NSNotification) {
view.removeGestureRecognizer(tapRecognizer!)
}
func keyboardWillShow(notification: NSNotification) {
tapRecognizer = UITapGestureRecognizer(target: self, action: "didTapView")
view.addGestureRecognizer(tapRecognizer!)
}
func didTapView(){
self.view.endEditing(true)
}
编辑:
我改变了方法:
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
self.delegate!.retornaTexto(self, texto: textField.text!)
return true
}
与: func textFieldDidEndEditing(textField: UITextField) {
if let texto = textField.text{
self.delegate!.retornaTexto(self, texto: texto)
}
}
但它在调用 retornaTexto 时没有控制台警告就停止了。
【问题讨论】:
标签: ios