编辑 UITextView 并在表格视图控制器中触摸键盘以外的任何位置时无法关闭键盘
Posted
技术标签:
【中文标题】编辑 UITextView 并在表格视图控制器中触摸键盘以外的任何位置时无法关闭键盘【英文标题】:Can't dismiss keyboard when editing UITextView and touching anywhere outside of keyboard in table view controller 【发布时间】:2019-12-21 02:59:52 【问题描述】:我在表格视图控制器的一个单元格中有几个 textView,当您触摸键盘外的任何位置时,我试图关闭键盘。我已经尝试过触摸开始方法,但它没有用。文本视图不透明并且启用了用户交互。
class RegisterTableViewController: UITableViewController
override func viewDidLoad()
// set all text views delegate to self
// dismiss keyboard on touch
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
print("touch")
super.touchesBegan(touches, with: event)
view.endEditing(true)
extension RegisterTableViewController: UITextViewDelegate
func textViewDidBeginEditing(_ textView: UITextView)
textView.text = ""
我是 swift 新手,希望能提供任何帮助!
【问题讨论】:
您希望用户触摸什么来关闭键盘?你实际上是在测试什么? 这能回答你的问题吗? ios - Dismiss keyboard when touching outside of UITextField 上述代码和 touchesBegan 方法在都是 UITextField 时有效,但不适用于 UITextViews。当用户触摸键盘外部时,应关闭键盘(view.endEditing)。 【参考方案1】:在您的UITableViewCell
文件中添加touchesBegan
代码,如果您在TextField
外部但在单元格内部触摸,该代码将起作用
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
self.Your_TextField.endEditing(true)
但它在 cell
之外不起作用(在另一个 ViewController
的 UIVIew
中),所以添加 UITapGesture
来实现这一点
override func viewDidLoad()
super.viewDidLoad()
let tapgest = UITapGestureRecognizer(target: self, action: #selector(taptoend))
self.Your_Table_View.addGestureRecognizer(tapgest)
@objc func taptoend()
self.Your_Table_View.endEditing(true)
print("Key-Board will be dismissed here")
【讨论】:
我试过 self.textview.endEditing(true) 还是不行。我不知道这是否与 UITextView 或 touchesBegan 方法有关。 (forums.developer.apple.com/thread/91263) 表视图控制器内部的文本视图有问题吗? 我已更改代码,请尝试并返回!! @Jon,随时!并感谢您的批准可能会回答:)【参考方案2】:您需要在单元格内添加点击手势识别器。将所有文本输入放在 UIView 中。在单元格内制作 UIView 的出口。然后将此代码添加到您的单元格中。
@IBOutlet weak var myView: UIView!
override func awakeFromNib()
super.awakeFromNib()
// Initialization code
let tap = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))
self.myView.addGestureRecognizer(tap)
@objc func dismissKeyboard()
self.endEditing(true)
【讨论】:
以上是关于编辑 UITextView 并在表格视图控制器中触摸键盘以外的任何位置时无法关闭键盘的主要内容,如果未能解决你的问题,请参考以下文章
Swift 4:@IBOutlet UITextView 崩溃
无法在自定义 TableViewCell 中编辑 UITextView