didSelectItemAt 未被调用
Posted
技术标签:
【中文标题】didSelectItemAt 未被调用【英文标题】:didSelectItemAt not being called 【发布时间】:2016-09-29 21:32:51 【问题描述】:我的收藏视图已准备就绪,我正在尝试使用didSelectItemAt
转到详细视图。但我只想测试记录每个项目并且它没有记录。
我已经设置了所有的代表:
*
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UISearchBarDelegate *
@IBOutlet weak var activityIndicatorView: UIActivityIndicatorView!
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var collection: UICollectionView!
override func viewDidLoad()
super.viewDidLoad()
collection.dataSource = self
collection.delegate = self
searchBar.delegate = self
activityIndicatorView.isHidden = true
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
view.addGestureRecognizer(tap)
*
我做错了什么?
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)
let movie : Movie
movie = MOVIE_ARRAY[indexPath.row]
print(movie.plot)
【问题讨论】:
你设置了集合视图的代理吗? 检查你是否没有使用 didDeselectItemAt indexPath 而不是 didSelectItemAt didSelectItemAt 被使用 :) 谷歌搜索了一个小时,这是最常见的错误。是的,视图的委托都设置好了。 这是我的 github - github.com/bwong199/ios-Movie-Search-Application 【参考方案1】:您在视图上添加了TapGestureRecognizer
。 TapGestureRecognizer 有一个属性cancelsTouchesInView
。
- var cancelsTouchesInView: Bool get set
一个布尔值,影响在识别手势时是否将触摸传递到视图。
默认情况下这是true
,并且会阻止调用 didSelectItemAt,因为在识别到点击后触摸不会传递到视图。
您需要将其设置为false
,如下所示:
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
【讨论】:
你成就了我的一天 那些意想不到的手势识别器! 我在另一个文件的函数中添加了点击手势,并在我的视图控制器上将其称为 hideKeyboardWhenTappedAround() ......根据您的建议编辑该函数非常有效......跨度> 我想在点击一个项目时禁用 TapGestureRecognizer 工作(当 didSelectItemAt 触发时)。我尝试了你的解决方案,但它只允许 didSelectItemAt 执行,但在此之后它执行它的方法 看了这个答案然后说“不,不适用”......当然,你猜怎么着......适用!!!以上是关于didSelectItemAt 未被调用的主要内容,如果未能解决你的问题,请参考以下文章
与 UITapGestureRecognizer 一起使用时未调用 collectionView 的 didSelectItemAt
为啥我的 .pushViewController 不能快速从 didSelectItemAt 工作
didSelectItemAt 在 SCLAlertView 中不起作用
UIColctionView didSelectItemAt 问题