我的视图上有一个UITextView,可以通过在键盘工具栏上按一个do按钮来取消键盘。此按钮还在对文本执行保存。在我的应用程序的最新版本之前,整个过程都是完美的。我不知道发生了什么。我怀疑问题在于设置我的应用程序与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之间创建一个委托模式,以使便笺保存成为可能。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。