2016-09-29 14 views
5

私は自分のコレクションビューを用意しています。私はdidSelectItemAtを詳細ビューに分割しようとしています。しかし、私はちょうど各項目のログをテストしたい、それはログに記録されていません。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) 
} 

enter image description here

+1

あなたはコレクションビューのデリゲートを設定しましたか? – rmaddy

+0

didSelectItemAtの代わりにdidDeselectItemAt indexPathを使用していないか確認してください。 –

+0

didSelectItemAtが使用されました:) 1時間のグーグルで、これが最も一般的な間違いです。はい、ビューの代理人はすべて設定されています。 –

答えて

17

あなたは、ビューにTapGestureRecognizerを追加しました。 TapGestureRecognizerのプロパティはcancelsTouchesInViewです。

- VARのcancelsTouchesInView:ブール{設定取得}

ジェスチャが認識されたときにタッチがビューに配信されるかどうかに影響するブール値。

これはデフォルトでtrueであり、タップが認識された後にタッチには配信されないため、didSelectItemAtを呼び出すことはできません。 次のようなfalseに設定する必要があります。

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
tap.cancelsTouchesInView = false 
view.addGestureRecognizer(tap) 
関連する問題