我正在开发一个具有视频拾取功能的KMM应用程序。对于iOS实现,我使用PHPickerViewController
。视图控制器很好地呈现了,但我不知道如何处理来自PHPickerViewControllerDelegateProtocol
的回调参数didFinishPicking
。
我的目标是从picker
给出的文件中提取字节数组
以下是我的评论:
private val delegate = object : NSObject(), PHPickerViewControllerDelegateProtocol,
UINavigationControllerDelegateProtocol {
override fun picker(picker: PHPickerViewController, didFinishPicking: List<*>) {
// TODO extract the byte array form the file referenced in the picker param
picker.dismissViewControllerAnimated(flag = false) {}
}
}
1条答案
按热度按时间gg58donl1#
当从Kotlin部分实现一些iOS特定的功能时,我总是从在GitHub上寻找示例开始,在这种情况下,你可以找到一些this query的示例。
在某些情况下,当此搜索没有给予您任何结果时,您可以查找iOS示例并弄清楚如何将其转换为Kotlin。使用ObjC示例更容易,因为这是Kotlin使用的源代码。使用这种方法,你可以有用户this article作为参考。
KMP有一些与ObjC泛型相关的限制,而且一些命名可能会令人困惑,所以使用Xcode或documentation来查看ObjC头文件总是一个好主意。
我认为从这段代码中可以更清楚地看到,这里需要
results
,但在Kotlin中,这个参数被称为didFinishPicking
-这是因为ObjC是如何构建的,函数参数有两个名称,有时它们是相同的,但Kotlin只能取其中一个,它取第一个。由于ObjC泛型,类型丢失,所以你需要转换它:
最后,您可以使用此对象来获取数据。如果你正在寻找视频,请使用
UTTypeMovie
: