在 UIView 上调用 endEditing
Posted
技术标签:
【中文标题】在 UIView 上调用 endEditing【英文标题】:Calling endEditing on a UIView 【发布时间】:2016-05-01 18:20:29 【问题描述】:我有一个带有两个 UITextView 的 tableView。用户可以通过点击“+”按钮添加任意数量的单元格。 tableView 从一行(单元格)开始。假设用户向两个 textViews 添加了一些信息,然后点击加号按钮并滚动到它。当用户滚动时,我调用此函数来关闭键盘,以免妨碍键盘:
override func scrollViewDidScroll(scrollView: UIScrollView)
self.view.endEditing(true)
现在,键盘消失了,用户开始点击第二行的文本字段。 tableView 跳起来(我想是为了容纳键盘),但是 textField 不能编辑(没有光标和键盘不出现)。如果我回到第一行(第 0 行),键盘会出现,我可以编辑 textView。 为什么会这样?
【问题讨论】:
如果为第一个 textView 调用 resignFirstResponder 会发生什么? 【参考方案1】:scrollView 子类上有一个属性(例如 TableViews)
tableView.keyboardDismissMode = .OnDrag
一旦用户开始向下拖动,它就会关闭键盘
【讨论】:
我现在在 viewDidLoad 中调用该代码时注意到一个错误。我得到 ~~ -[UIWindow endDisablingInterfaceAutorotationAnimated:] 调用scrollViewDidScroll 每次 tableview 移动时都会调用,所以当“tableView 跳起来(我认为是为了适应键盘)”时,它也会调用并关闭键盘。您应该在那里添加一些限制或将 endEditing 代码放在其他地方。
【讨论】:
以上是关于在 UIView 上调用 endEditing的主要内容,如果未能解决你的问题,请参考以下文章
drawRect 在 UIView 子类上被调用,但不在 UIViewController 上
如果 UIView 动画在单元格上运行,则不会调用 CollectionView didSelectItemAtIndexPath
使用 loadNibNamed 加载视图时,如何在 UIView 上调用便利初始化程序?
什么时候在 UIView 或 UIViewController 上调用“required init?(coder aDecoder: NSCoder)”?