HarmonyOS鸿蒙Next中PhotoPickerComponent设置maxPhotoSelectNumber后,达到最大数量时,点开大图还可以选中其他图片

HarmonyOS鸿蒙Next中PhotoPickerComponent设置maxPhotoSelectNumber后,达到最大数量时,点开大图还可以选中其他图片

下面是我的执行代码,这段代码设置maxPhotoSelectNumber后,还可以通过打开大图左右划选中图片

Column({ space: 12 }) {
  Scroll() {
    PhotoPickerComponent({
      pickerOptions: {
        maxPhotoSelectNumber:3,
        maxVideoSelectNumber:0,
        isPhotoTakingSupported:false,
        maxSelectedReminderMode: ReminderMode.MASK
      },
      onSelect: (uri: string) => this.onSelect(uri),
      onEnterPhotoBrowser: (photoBrowserInfo: PhotoBrowserInfo): boolean => this.onEnterPhotoBrowser(photoBrowserInfo),
      pickerController: this.pickerController
    })
      .width('100%')
      .height('100%')

  }
  .width('100%')
  .height(400)

  Column() {
    Button($r('app.string.confirm'))
      .width('100%')
      .height(40)
      .onClick(() => {
        this.isShowPicker = false;
        this.isShowGet = false;
      })
  }
  .width('100%')
  .height(40)
  .padding({ left: 16, right: 16 })
}
.width('100%')
.height(452)
.margin({ top: 16, bottom: 44 })
.justifyContent(FlexAlign.SpaceBetween)

更多关于HarmonyOS鸿蒙Next中PhotoPickerComponent设置maxPhotoSelectNumber后,达到最大数量时,点开大图还可以选中其他图片的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

你好。

IDE和SDK版本是多少可以提供下吗?

更多关于HarmonyOS鸿蒙Next中PhotoPickerComponent设置maxPhotoSelectNumber后,达到最大数量时,点开大图还可以选中其他图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,PhotoPickerComponentmaxPhotoSelectNumber仅限制初始选择器界面的图片选择数量。当用户点开大图浏览时,当前实现逻辑允许继续选择图片,这是组件默认行为。要限制大图选择,需监听onPhotoSelected回调并在达到maxPhotoSelectNumber时禁用选择操作。组件版本3.1.5存在该限制缺失问题。

这是一个已知的PhotoPicker组件行为问题。在HarmonyOS Next中,当设置maxPhotoSelectNumber限制后,虽然在主界面选择图片时会受到数量限制,但在进入图片浏览器(大图预览)模式后,用户仍可以通过左右滑动并点击选中按钮来绕过这个限制。

要解决这个问题,建议在onEnterPhotoBrowser回调中进行额外检查。当已选图片数量达到maxPhotoSelectNumber时,可以返回false阻止进入大图预览模式,或者在大图预览界面禁用选择功能。例如:

onEnterPhotoBrowser(photoBrowserInfo: PhotoBrowserInfo): boolean {
  if (this.selectedPhotos.length >= 3) { // 3是您设置的maxPhotoSelectNumber
    return false; // 阻止进入大图预览
  }
  return true;
}

或者您也可以在onSelect回调中检查已选数量,如果超过限制则取消最新选择。这需要配合状态管理来实现。

回到顶部