Give the media upload preview a descriptive VoiceOver title

The QLPreviewItem used the media's file name as its title, which VoiceOver
read as cryptic alt text. Provide a descriptive "Photo preview" / "Video
preview" title based on the media type instead.

Addresses #5240, #5241.
This commit is contained in:
Mauro Romito
2026-06-19 12:52:19 +02:00
committed by Mauro
parent 17da5ff3b7
commit 8a4e4d1903
4 changed files with 22 additions and 1 deletions
@@ -264,7 +264,16 @@ private struct PreviewView: UIViewControllerRepresentable {
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
PreviewItem(previewItemURL: view.mediaURLs[index], previewItemTitle: view.title)
let url = view.mediaURLs[index]
// Use a descriptive title instead of the file name so VoiceOver doesn't read a cryptic name.
return PreviewItem(previewItemURL: url, previewItemTitle: previewItemTitle(for: url))
}
private func previewItemTitle(for url: URL) -> String? {
guard let type = UTType(filenameExtension: url.pathExtension) else { return view.title }
if type.conforms(to: .image) { return L10n.a11yPhotoPreview }
if type.conforms(to: .movie) || type.conforms(to: .video) { return L10n.a11yVideoPreview }
return view.title
}
// MARK: - QLPreviewControllerDelegate