开发者社区> 问答> 正文

键盘停止显示UIToolbar

我的视图上有一个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...谢谢大家的帮助!

展开
收起
游客5akardh5cojhg 2019-12-05 16:37:53 455 0
1 条回答
写回答
取消 提交回答
  • 这是一个愚蠢的错误。在自动布局方面有一些问题,所以我将这个textView对象移到了我的自定义单元格类中,而不是视图控制器。然后,我在VC的indexPath方法中与cellForRow中的textView交谈,但忘记在单元格类中设置工具栏。我仍然在视图控制器中设置了TextView和工具栏。我已经通过移动自定义单元格中的设置来解决这个问题,然后在自定义单元格和vc之间创建一个委托模式,以使便笺保存成为可能。

    2019-12-05 16:39:24
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载