Преглед изворни кода

improve draft area accessibility

cyberta пре 4 година
родитељ
комит
1cf55806df

+ 2 - 0
deltachat-ios/Chat/Views/DocumentPreview.swift

@@ -31,6 +31,7 @@ public class DocumentPreview: DraftPreview {
     override public func cancel() {
         fileView.prepareForReuse()
         delegate?.onCancelAttachment()
+        accessibilityLabel = nil
     }
 
     override public func configure(draft: DraftModel) {
@@ -42,6 +43,7 @@ public class DocumentPreview: DraftPreview {
             tmpMsg.text = draft.text
             fileView.configure(message: tmpMsg)
             self.delegate?.onAttachmentAdded()
+            accessibilityLabel = "\(String.localized("attachment")), \(fileView.configureAccessibilityLabel())"
             isHidden = false
         } else {
             isHidden = true

+ 4 - 2
deltachat-ios/Chat/Views/DraftPreview.swift

@@ -15,8 +15,7 @@ public class DraftPreview: UIView {
         view.isUserInteractionEnabled = true
         view.translatesAutoresizingMaskIntoConstraints = false
         view.addSubview(cancelImageView)
-        view.accessibilityLabel = String.localized("cancel")
-        view.isAccessibilityElement = true
+        view.isAccessibilityElement = false
         return view
     }()
 
@@ -75,6 +74,9 @@ public class DraftPreview: UIView {
         let recognizer = UITapGestureRecognizer(target: self, action: #selector(cancel))
         cancelButton.addGestureRecognizer(recognizer)
         backgroundColor = DcColors.chatBackgroundColor
+        isAccessibilityElement = true
+        let accessibilityCancelAction = UIAccessibilityCustomAction(name: String.localized("cancel"), target: self, selector: #selector(cancel))
+        accessibilityCustomActions = [accessibilityCancelAction]
     }
 
     @objc public func cancel() {

+ 15 - 0
deltachat-ios/Chat/Views/FileView.swift

@@ -44,6 +44,7 @@ public class FileView: UIView {
     private lazy var fileImageView: UIImageView = {
         let imageView = UIImageView()
         imageView.contentMode = .scaleAspectFit
+        isAccessibilityElement = false
         return imageView
     }()
 
@@ -61,6 +62,7 @@ public class FileView: UIView {
         title.translatesAutoresizingMaskIntoConstraints = false
         title.numberOfLines = 3
         title.lineBreakMode = .byCharWrapping
+        isAccessibilityElement = false
         return title
     }()
 
@@ -69,6 +71,7 @@ public class FileView: UIView {
         subtitle.font = UIFont.preferredItalicFont(for: .caption2)
         subtitle.translatesAutoresizingMaskIntoConstraints = false
         subtitle.numberOfLines = 1
+        isAccessibilityElement = false
         return subtitle
     }()
 
@@ -106,6 +109,18 @@ public class FileView: UIView {
         fileSubtitle.text = message.getPrettyFileSize()
     }
 
+    public func configureAccessibilityLabel() -> String {
+        var accessibilityFileTitle = ""
+        var accessiblityFileSubtitle = ""
+        if let fileTitleText = fileTitle.text {
+            accessibilityFileTitle = fileTitleText
+        }
+        if let subtitleText = fileSubtitle.text {
+            accessiblityFileSubtitle = subtitleText
+        }
+        
+        return "\(accessibilityFileTitle), \(accessiblityFileSubtitle)"
+    }
 
     public func prepareForReuse() {
         fileImageView.image = nil

+ 3 - 0
deltachat-ios/Chat/Views/MediaPreview.swift

@@ -44,6 +44,7 @@ class MediaPreview: DraftPreview {
                 } else if let image = image {
                     self.setAspectRatio(image: image)
                     self.delegate?.onAttachmentAdded()
+                    self.accessibilityLabel = "\(String.localized("attachment")), \(draft.viewType == DC_MSG_GIF ? String.localized("gif") : String.localized("image"))"
                 }
             })
             isHidden = false
@@ -65,6 +66,7 @@ class MediaPreview: DraftPreview {
                 }
             }
             self.isHidden = false
+            self.accessibilityLabel = "\(String.localized("attachment")), \(String.localized("video"))"
         } else {
             isHidden = true
         }
@@ -74,6 +76,7 @@ class MediaPreview: DraftPreview {
         contentImageView.sd_cancelCurrentImageLoad()
         contentImageView.image = nil
         delegate?.onCancelAttachment()
+        accessibilityLabel = nil
     }
 
     func setAspectRatio(image: UIImage) {

+ 2 - 0
deltachat-ios/Chat/Views/QuotePreview.swift

@@ -23,6 +23,7 @@ public class QuotePreview: DraftPreview {
         quoteView.prepareForReuse()
         delegate?.onCancelQuote()
         quoteView.quote.numberOfLines = 3
+        accessibilityLabel = nil
     }
 
     override public func configure(draft: DraftModel) {
@@ -44,6 +45,7 @@ public class QuotePreview: DraftPreview {
                     quoteView.citeBar.backgroundColor = contact.color
                 }
             }
+            accessibilityLabel = quoteView.configureAccessibilityLabel()
 
             isHidden = false
         } else {

+ 21 - 0
deltachat-ios/Chat/Views/QuoteView.swift

@@ -8,6 +8,7 @@ public class QuoteView: UIView {
         view.clipsToBounds = true
         view.layer.cornerRadius = 1.5
         view.translatesAutoresizingMaskIntoConstraints = false
+        view.isAccessibilityElement = false
         return view
     }()
 
@@ -17,6 +18,7 @@ public class QuoteView: UIView {
         view.textColor = DcColors.grayTextColor
         view.numberOfLines = 3
         view.translatesAutoresizingMaskIntoConstraints = false
+        view.isAccessibilityElement = false
         return view
     }()
 
@@ -24,6 +26,7 @@ public class QuoteView: UIView {
         let view = UILabel()
         view.font = UIFont.preferredFont(for: .caption1, weight: .semibold)
         view.translatesAutoresizingMaskIntoConstraints = false
+        view.isAccessibilityElement = false
         return view
     }()
 
@@ -32,6 +35,7 @@ public class QuoteView: UIView {
         view.translatesAutoresizingMaskIntoConstraints = false
         view.contentMode = .scaleAspectFill
         view.clipsToBounds = true
+        view.isAccessibilityElement = false
         return view
     }()
 
@@ -45,6 +49,7 @@ public class QuoteView: UIView {
     }
 
     private func setupSubviews() {
+        isAccessibilityElement = true
         addSubview(citeBar)
         addSubview(senderTitle)
         addSubview(imagePreview)
@@ -70,6 +75,22 @@ public class QuoteView: UIView {
         ])
     }
 
+    public func configureAccessibilityLabel() -> String {
+        var accessibilitySenderTitle = ""
+        var accessibilityQuoteText = ""
+        var accessibilityQuoteImageText = ""
+        if let senderTiteText = senderTitle.text {
+            accessibilitySenderTitle = "\(senderTiteText), "
+        }
+        if let quoteText = quote.text {
+            accessibilityQuoteText = "\(quoteText), "
+        }
+        if imagePreview.image != nil {
+            accessibilityQuoteImageText = "\(String.localized("image")), "
+        }
+        return "\(accessibilitySenderTitle), \(accessibilityQuoteText), \(accessibilityQuoteImageText)"
+    }
+
     public func prepareForReuse() {
         quote.text = nil
         quote.attributedText = nil