我无法在swift中解雇文本视图的键盘。
我能够使用以下
关闭文本字段 @IBAction func DismissKeyboard(sender: AnyObject)
{
self.resignFirstResponder()
}
但我不确定如何使用文本视图
答案 0 :(得分:23)
您必须将textview.delegate
设置为self并使用shouldChangeTextInRange
功能在按返回时退出。
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
if text == "\n" // Recognizes enter key in keyboard
{
textView.resignFirstResponder()
return false
}
return true
}
答案 1 :(得分:2)
swift 3
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == "\n" {
textView.resignFirstResponder()
return false
}
return true
}
答案 2 :(得分:0)
只需将UITextView添加为IBOutlet并使用相同的功能:
@IBAction func DismissKeyboard(sender: AnyObject) {
yourtextView.resignFirstResponder()
}
答案 3 :(得分:0)
这是消除软键盘的更好直观的解决方案(对您的用户而言)。 “ \ n”解决方案的问题是用户无法在textView中插入换行符-因为在换行符发生之前按键盘上的Return / Done按钮将关闭键盘。通过以下方法,您可以在告诉用户仅敲击外部文本输入字段的情况下保留该功能,这是消除键盘的一种标准方法。
// MARK: - dismiss keyboard when user taps outside of text boxes
override func viewDidLoad() {
super.viewDidLoad()
configureTapGesture()
}
private func configureTapGesture() {
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(WriteJournalEntryViewController.handleTap))
view.addGestureRecognizer(tapGesture)
}
@objc func handleTap() {
view.endEditing(true)
}
(假定此代码位于名为“ WriteJournalEntryViewController”的UIViewController自定义子类中)。
view = UIViewController中的整个视图,因此它不仅仅适用于textView对象。 endEditing = UIView类的方法,您可以阅读其文档。