iOS:检测或禁用多图像选择

iOS: Detect or disable multiple image selection

我们有一个带有图像附件控件的 UIWebview。

我们用户点击控件会弹出 iOS 操作 sheet。

当用户点击 'Browse' 或 'Photo Library' 时,用户可以 select 多个图像。

然后我拦截

- (void)imagePickerController: didFinishPickingMediaWithInfo: 使用我自己的 ImagePickerViewController 进行调配。

所以,我的问题是:在 didFinishPickingMediaWithInfo 中,是否可以检测到多个图像已被 select 编辑?如果不是,有没有办法强制 iOS 侧的图像 selection 只允许一个图像?

如果可能的话,我想检测到多个图像已被 selected,然后回退到正常功能(即我不会混合)。

我确实检查了作为参数发送到 didFinishPickingMediaWithInfo 的选择器和信息,但即使 select 编辑了多张图像,信息参数也只有一张图像的信息。它保留第一个 selection 并丢弃第二个,并且不会再次调用该方法。

编辑: 我没有使用第 3 方图像选择器。

UIImagePickerController 调用 didFinishPickingMediaWithInfo,然后调用 didFinishPickingMultipleMediaWithInfo。它首先调用 didFinishPickingMediaWithInfo,然后我检查

if info["UIImagePickerControllerReferenceURL"] == nil {
    // process the selected single image, we don't want to process multiple images
} else {
    // do nothing
}

然后 didFinishPickingMultipleMediaWithInfo 被调用,这次使用正确的数组,如果数组中的项目数大于 1,我们使用正常方法而不是 swizzled 代码,但如果只有一张图片,我们使用 swizzled 方法正常处理它。

因此,我们无法禁用多图像选择,但使用 didFinishPickingMultipleMediaWithInfo,我们可以检测何时选择多图像并更改应用程序在 return 中的行为方式。