私は新しいドラッグアンドドロップAPIをスイフトで使用しています。4.ドラッグして、ビューコントローラーのビューの画像これは、iPhone上で動作する必要があるため、同じアプリケーションでドラッグアンドドロップされ、この機能は同じアプリ内の電話機でのみ機能します。私は書いたものをテストするために実際のデバイスを使っています。なぜなら、一度それをタップすると、なぜ私はセルをドラッグできないのか分かりませんでした。しかし、iPad上でシミュレータを実行すると...それは動作し、私はそれをドラッグすることができます。私はリンゴのドキュメントを読んで、ドラッグ中にドラッグ項目の外観を設定できるように指定しましたが、デリゲートの関数のカスタム実装が存在しないか、またはnilが返されないと、セル全体がドラッグされます。それはまだ動作するはずですが、それはiPads上のシミュレータで行いますが、シミュレートされたiPhoneや実際のiPhoneでは実行しません。以下のコードリストたぶん誰かがこれをすでに上に行き、私を助ける方法を知っています。ありがとうございました。 のみ関連ビット:コレクションビューのセルからのドラッグは、iPadシミュレータでは動作しますが、Swift 4のiPhoneシミュレータまたは実際のデバイスでは機能しません。
class DefineRoomPropertiesVC: UIViewController {
//MARK: - Init.
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
setupTopMenuBar()
setupViews()
topMenuCollectionView.dragDelegate = self
}
fileprivate let topMenuCollectionView: TopMenuBarCollectionView = {
let layout = UICollectionViewFlowLayout()
let collectionView = TopMenuBarCollectionView(frame: .zero, collectionViewLayout: layout)
return collectionView
}()
}
extension DefineRoomPropertiesVC: UICollectionViewDragDelegate {
func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] { // called when a drag is initiated.
let image = topMenuCollectionView.imagesForTopSectionCell[indexPath.item]
let itemProvider = NSItemProvider(object: image)
let dragItem = UIDragItem(itemProvider: itemProvider)
return [dragItem]
}
func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters? {
return nil
}