作者:中凱kai | 来源:互联网 | 2023-01-17 00:04
我一直在尝试新的iOS 11拖放功能.这很棒,但它只适用于iPad.苹果声称它也适用于iPhone,但我无法在那里工作?Apple的说法是假的,还是我做错了什么?
1> matt..:
你正在某个视图上安装UIDragInteraction对象,对吗?嗯,默认情况下,拖动交互的isEnabled
属性false
在iPhone上(根据isEnabledByDefault
类属性的设备相关值).
因此,要在iPhone上打开拖放,只需isEnabled
在创建时将拖动交互设置为true:
override func viewDidLoad() {
super.viewDidLoad()
let dragger = UIDragInteraction(delegate: self)
self.dragView.addInteraction(dragger)
dragger.isEnabled = true // for iPhone: presto, we've got drag and drop!
}
类似地,对于表视图或集合视图,如另一个答案所指出的,您需要将其设置dragInteractionEnabled
为true
,因为它false
在iPhone上默认也是如此.
2> Imanou Petit..:
使用Swift 4和iOS 11,根据您的需要,您可以选择以下方法之一来解决您的问题.
#1.允许UITableView
在iPhone上进行拖放交互
UITableView
有一个叫做的财产dragInteractionEnabled
.dragInteractionEnabled
有以下声明:
var dragInteractionEnabled: Bool { get set }
一个布尔值,指示表视图是否支持应用之间的拖放.
此属性的默认值true
在iPad和false
iPhone上.将值更改为true
iPhone可以将内容从表格视图拖动到iPhone上的其他应用程序,并从其他应用程序接收内容.
以下代码显示了如何使用dragInteractionEnabled
以允许UItableView
在iPhone上进行拖放交互:
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
/* ... */
tableView.dragInteractiOnEnabled= true
}
}
#2.允许UICollectionView
在iPhone上拖放交互
UICollectionView
有一个叫做的财产dragInteractionEnabled
.dragInteractionEnabled
有以下声明:
var dragInteractionEnabled: Bool { get set }
一个布尔值,指示集合视图是否支持应用程序之间的拖放.
此属性的默认值true
在iPad和false
iPhone上.将值更改为true
iPhone可以将内容从集合视图拖到iPhone上的另一个应用程序,并从其他应用程序接收内容.
以下代码显示了如何使用dragInteractionEnabled
以允许UICollectionView
在iPhone上进行拖放交互:
class CollectionViewController: UICollectionViewController {
override func viewDidLoad() {
super.viewDidLoad()
/* ... */
collectionView?.dragInteractiOnEnabled= true
}
}
#3.允许UIImageView
在iPhone上拖放交互
UIDragInteraction
有一个叫做的财产isEnabled
.isEnabled
有以下声明:
var isEnabled: Bool { get set }
一个布尔值,指定拖动交互是否响应触摸并允许参与拖动活动.
以下代码显示了如何使用isEnabled
除了UIImageView
在iPhone上删除交互之外还允许拖动交互:
class ViewController: UIViewController, UIDragInteractionDelegate, UIDropInteractionDelegate {
let imageView = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(imageView)
imageView.image = UIImage(named: "MyImage")
imageView.isUserInteractiOnEnabled= true
imageView.cOntentMode= .scaleAspectFit
imageView.frame = view.bounds
imageView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
let dropInteraction = UIDropInteraction(delegate: self)
imageView.addInteraction(dropInteraction)
let dragInteraction = UIDragInteraction(delegate: self)
dragInteraction.isEnabled = true
imageView.addInteraction(dragInteraction)
}
/* ... */
}