我想要的只是快速点击单元格以启动新视图。启动工作但是需要很长时间(3-5秒)保持单元格以使其注册它已被选中。这是正常的行为吗?我找不到任何方法来回应简单的.touchUpInside事件。那么我做错了什么?我已经通过了UITableViewCell的Apple文档,找不到任何可以帮助我的字段或设置。提前谢谢!
编辑: 在视图控制器viewDidLoad中:
self.searchTable.dataSource = self
self.searchTable.delegate = self
self.searchTable.register(UINib(nibName: "ItemCellView", bundle: nil), forCellReuseIdentifier: "itemCell")
self.searchTable.reloadData()
在viewController中:
func searchBarSearchButtonClicked(_ searchBar: UISearchBar){
searchItems.removeAll()
self.searchBar.endEditing(true)
requests.requestSearch(query: searchBar.text!, filter: "RATING", vc: self)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (self.searchItems.count)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = self.searchTable.dequeueReusableCell(withIdentifier: "itemCell")! as! ItemCell
cell.formatCell(item: self.searchItems[indexPath.row])
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
let item = self.searchItems[indexPath.row]
let vc = self.storyboard?.instantiateViewController(withIdentifier: "item") as? ItemController
vc?.item = item
self.navigationController?.pushViewController(vc!, animated: false)
}
编辑#2:
我还想说明我的代码中根本没有任何GestureRecognizers。
答案 0 :(得分:1)
想出来。虽然我没有直接在该文件中添加任何手势识别器,但是我通过使用我制作的功能间接添加了它,这使我能够从键盘中取出以使它们消失。我所要做的就是将这一行代码添加到该函数中,它现在可以完美地运行。谢谢@mat的帮助!
这是罪魁祸首
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
func dismissKeyboard() {
view.endEditing(true)
}
答案 1 :(得分:0)
我有类似的问题。 我已经在一个单元格上设置了一个长按识别器,如下所示:
let press = UILongPressGestureRecognizer(target: self, action: #selector(myMethodToHandlePress(gesture:)))
press.minimumPressDuration = 0.2
press.cancelsTouchesInView = false
ToDoView.addGestureRecognizer(press)
然后,我想在同一视图内的另一个表格视图中点击一个单元格。无论我做了什么-甚至删除了上面的代码-我都可以得到的唯一方法:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
响应轻击是将轻击识别器拖动到表格单元格上。 现在可以完美运行了。 我认为这可能是导致长按卡住的错误。