我的视图上有一个UITextView,可以通过按下键盘工具栏上的完成按钮来关闭键盘。此按钮还在文本上执行保存。直到我应用程序的最新版本为止,整个过程一直运行良好。我不知道发生了什么事。我怀疑问题出在将我的应用程序向后兼容到iOS 11.0版本。但是后来我再次尝试了更高的开发目标,结果是一样的。构建最新更新时,我没有触摸此视图的代码,因此我不确定是什么原因导致了问题。我的代码的相关部分:
let textView: UITextView = {
let tw = UITextView()
tw.font = Font.kohinoorTeluguMedium_20
tw.returnKeyType = .default
tw.isScrollEnabled = true
tw.keyboardDismissMode = .interactive
tw.translatesAutoresizingMaskIntoConstraints = false
return tw
}()
fileprivate func setupKeyboardToolbar() {
let keyboardToolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
keyboardToolBar.translatesAutoresizingMaskIntoConstraints = false
keyboardToolBar.sizeToFit()
let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(handleDoneButton))
keyboardToolBar.items = [doneButton]
self.textView.inputAccessoryView = keyboardToolBar
textView.delegate = self
// self.textView.autoresizingMask = .flexibleHeight
keyboardToolBar.layoutIfNeeded()
keyboardToolBar.isHidden = false
}
override func viewDidLoad() {
super.viewDidLoad()
setupKeyboardToolbar()
tableView.register(DetailCell.self, forCellReuseIdentifier: cellId)
tableView.backgroundColor = AdaptiveColors.tableViewBackgroundColor
tableView.separatorColor = AdaptiveColors.tableViewBackgroundColor
setupDismissButton()
let editButton = UIBarButtonItem(title: LocalizedString.edit, style: .plain, target: self, action: #selector(handleEdit))
editButton.tintColor = .white
navigationItem.rightBarButtonItem = editButton
}
@objc func handleDoneButton() {
let context = CoreDataManager.shared.persistentContainer.viewContext
lesson?.notes = textView.text
do {
try context.save()
} catch let savErr {
print("Error saving context \(savErr)")
}
textView.resignFirstResponder()
}
func textViewDidChange(_ textView: UITextView) {
tableView.beginUpdates()
tableView.endUpdates()
}
func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
return true
}
}
[阅读了相关的stackOverflow答案之后,我尝试在layoutIfNeeded()
上调用isHidden = false
和keyboardToolbar
,但是没有运气。还尝试了设置self.textView.autoResizingMask = .flexibleHeight
的过程,但是没有运气。还尝试将keyboardToolbar
的委托设置为self
,并将自己声明为UIToolbarDelegate
。感谢任何人的帮助!
[好,我已修复它,这是一个愚蠢的错误,我有时忽略了它。我在自动布局方面遇到了一些问题,因此我将此textView对象移到了自定义单元格类中,而不是视图控制器中。然后我在VC的indexPath方法中与cellForRow中的textView进行了交谈,但是我忘了在单元格类中设置工具栏。我在视图控制器中仍然有textView和工具栏设置。我已经解决了这个问题,方法是在自定义单元格中移动设置,然后在自定义单元格和vc之间创建一个委托模式,以节省笔记。