键盘关闭动画对 Swift 中的手势位置有影响

问题描述 投票:0回答:1

使用此库来处理键盘操作

链接到我的源代码

我有

UITableView
,它正在移动/折叠/展开,还有一个与键盘一起移动的底部栏。显示键盘时,用户可以单击文本字段外部以隐藏键盘

问题是

UITableView
接收到
didSelectRow
事件但触摸位置不正确。看起来表格等待键盘关闭动画,然后才处理触摸(当单元格已经移动时)。

这种情况下如何让

UITableView
接收到正确的触摸位置?

ios swift uitableview keyboard touch
1个回答
0
投票

不起作用:

tableView.delaysContentTouches = false
scrollView.delaysContentTouches = false //because scrollView contains tableView

+延迟

resignFirstResponder
允许
UITableView
处理触摸的速度快于键盘被关闭的速度。结果 - 有些表格有时会忽略触摸。

作品:

修改库代码:

  1. 防止触摸自动穿过多个视图:
tapGesture.cancelsTouchesInView = true
  1. UIResponder.currentFirstResponder?.resignFirstResponder()

此行启动动画并立即修改帧。因此,您需要以某种方式获取触摸位置并将其传递给您需要的视图,然后才能执行。可以通过传递内部委托方法来添加视图(scrollView用于其他目的,不适合这种情况),并且可以模拟触摸,如下所示:

tableView?.touchesBegan([touch], with: nil)
tableView?.touchesEnded([touch], with: nil)
© www.soinside.com 2019 - 2024. All rights reserved.