Contenu connexe
Similaire à 指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説 (16)
Plus de Fumiya Sakai (20)
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
- 10. ✦ UICollectionViewのセルにUILongPressGestureRecognizerを付与
レシピ画像をドラッグ&ドロップで選択
イベント発生までのタップ時間の設定や指のズレの許容範囲を設定できるのでより細かい設定が可能です。
★画像のドラッグ&ドロップに関する処理を行う直前のトリガーとして活用
//セルに表示する値を設定する
internal func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
//セルの定義を行う
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "RecipeCell", for: indexPath) as! RecipeCell
//(省略)セルへ受け渡された値を設定する
//cellのタグを決定する(LongPressGestureRecognizerからの逆引き用に設定)
cell.tag = indexPath.row
//LongPressGestureRecognizerの定義を行う
let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(MakeRecipeController.longPressCell(sender:)))
//イベント発生までのタップ時間:0.24秒
longPressGesture.minimumPressDuration = 0.24
//指のズレを許容する範囲:10px
longPressGesture.allowableMovement = 10.0
//セルに対してLongTapGestureRecognizerを付与する
cell.addGestureRecognizer(longPressGesture)
return cell
}
longPressCellメソッド内で選択したセルの識別と
ドラッグ&ドロップの実処理部分を行う。
※TapGestureやPanGestureではダメなのか?
上記でも可能ではあるが、TapやPanではタイミングが早
すぎる or 動きとして不自然な感じがしたためにこの実
装にしました。