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 中的行为方式。
我们有一个带有图像附件控件的 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 中的行为方式。