Showing
2 changed files
with
40 additions
and
2 deletions
| ... | @@ -59,6 +59,8 @@ import SwiftEventBus | ... | @@ -59,6 +59,8 @@ import SwiftEventBus | 
| 59 | self.navigationController?.pushViewController(vc, animated: true) | 59 | self.navigationController?.pushViewController(vc, animated: true) | 
| 60 | } | 60 | } | 
| 61 | 61 | ||
| 62 | + self.passContainerView.accessibilityElementsHidden = true | ||
| 63 | + | ||
| 62 | setupUI() | 64 | setupUI() | 
| 63 | } | 65 | } | 
| 64 | 66 | ||
| ... | @@ -134,6 +136,11 @@ import SwiftEventBus | ... | @@ -134,6 +136,11 @@ import SwiftEventBus | 
| 134 | mapButton.layer.borderWidth = 2 | 136 | mapButton.layer.borderWidth = 2 | 
| 135 | mapButton.layer.borderColor = UIColor(rgb: 0x006D26).cgColor | 137 | mapButton.layer.borderColor = UIColor(rgb: 0x006D26).cgColor | 
| 136 | 138 | ||
| 139 | + mapButton.isAccessibilityElement = true | ||
| 140 | + mapButton.accessibilityLabel = mapButton.title(for: .normal) | ||
| 141 | + mapButton.accessibilityHint = "Διπλό πάτημα για άνοιγμα" | ||
| 142 | + mapButton.accessibilityTraits = .button | ||
| 143 | + | ||
| 137 | smLogosView.layer.cornerRadius = 16.0 | 144 | smLogosView.layer.cornerRadius = 16.0 | 
| 138 | smLogosView.layer.maskedCorners = [ .layerMinXMaxYCorner, .layerMaxXMaxYCorner] // Bottom left, right corner radius | 145 | smLogosView.layer.maskedCorners = [ .layerMinXMaxYCorner, .layerMaxXMaxYCorner] // Bottom left, right corner radius | 
| 139 | 146 | ||
| ... | @@ -171,6 +178,15 @@ import SwiftEventBus | ... | @@ -171,6 +178,15 @@ import SwiftEventBus | 
| 171 | if let tempMarketPassDetails = swiftApi().getMarketPassDetails() { | 178 | if let tempMarketPassDetails = swiftApi().getMarketPassDetails() { | 
| 172 | self.marketPassDetails = tempMarketPassDetails | 179 | self.marketPassDetails = tempMarketPassDetails | 
| 173 | self.updateUI() | 180 | self.updateUI() | 
| 181 | + | ||
| 182 | + // DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { | ||
| 183 | + UIAccessibility.post(notification: .screenChanged, argument: self.navigationItem.titleView) | ||
| 184 | + // } | ||
| 185 | + | ||
| 186 | + // Re-enable table view accessibility after the announcement | ||
| 187 | + DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { | ||
| 188 | + self.passContainerView.accessibilityElementsHidden = false | ||
| 189 | + } | ||
| 174 | } else { | 190 | } else { | 
| 175 | self.showDialog("Αποτυχία","Κάτι πήγε στραβά") | 191 | self.showDialog("Αποτυχία","Κάτι πήγε στραβά") | 
| 176 | } | 192 | } | 
| ... | @@ -183,9 +199,16 @@ import SwiftEventBus | ... | @@ -183,9 +199,16 @@ import SwiftEventBus | 
| 183 | barcodeLabel.frame.size.width = barcodeLabel.intrinsicContentSize.width | 199 | barcodeLabel.frame.size.width = barcodeLabel.intrinsicContentSize.width | 
| 184 | barcodeLabel.frame.size.height = barcodeLabel.intrinsicContentSize.height | 200 | barcodeLabel.frame.size.height = barcodeLabel.intrinsicContentSize.height | 
| 185 | 201 | ||
| 202 | + barcodeLabel.isAccessibilityElement = true | ||
| 203 | + barcodeLabel.accessibilityLabel = "Αριθμός barcode " + (barcodeLabel.text ?? "") | ||
| 204 | + | ||
| 186 | if let barcodeUIImage = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObject.ObjectType.ean13.rawValue, targetSize: CGSize(width: self.uiscreen.width * 0.8, height: self.uiscreen.height * 0.12)) { | 205 | if let barcodeUIImage = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObject.ObjectType.ean13.rawValue, targetSize: CGSize(width: self.uiscreen.width * 0.8, height: self.uiscreen.height * 0.12)) { | 
| 187 | // if let barcodeUIImage = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObject.ObjectType.ean13.rawValue, targetSize: CGSize(width: 110, height: 83)) { | 206 | // if let barcodeUIImage = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObject.ObjectType.ean13.rawValue, targetSize: CGSize(width: 110, height: 83)) { | 
| 188 | barcodeImage.image = barcodeUIImage | 207 | barcodeImage.image = barcodeUIImage | 
| 208 | + | ||
| 209 | + barcodeImage.isAccessibilityElement = true | ||
| 210 | + barcodeImage.accessibilityLabel = "Barcode" | ||
| 211 | + barcodeImage.accessibilityTraits = .image | ||
| 189 | 212 | ||
| 190 | barcodeImageHeight.constant = self.uiscreen.height * 0.12 | 213 | barcodeImageHeight.constant = self.uiscreen.height * 0.12 | 
| 191 | // barcodeImageHeight.constant = 83 | 214 | // barcodeImageHeight.constant = 83 | 
| ... | @@ -209,6 +232,10 @@ import SwiftEventBus | ... | @@ -209,6 +232,10 @@ import SwiftEventBus | 
| 209 | couponsValueAttributedString.append(couponsValueBoldString) | 232 | couponsValueAttributedString.append(couponsValueBoldString) | 
| 210 | couponsValueLabel.attributedText = couponsValueAttributedString | 233 | couponsValueLabel.attributedText = couponsValueAttributedString | 
| 211 | 234 | ||
| 235 | + let formattedCost = couponsValueString.replacingOccurrences(of: ".", with: ",") | ||
| 236 | + couponsValueLabel.isAccessibilityElement = true | ||
| 237 | + couponsValueLabel.accessibilityLabel = "Έχεις κουπόνια συνολικής αξίας " + formattedCost + "€" | ||
| 238 | + | ||
| 212 | let supermarkets: Array<swiftApi.SupermarketModel> = marketPassDetails?._supermarkets ?? [] | 239 | let supermarkets: Array<swiftApi.SupermarketModel> = marketPassDetails?._supermarkets ?? [] | 
| 213 | 240 | ||
| 214 | // Create a horizontal stack view | 241 | // Create a horizontal stack view | 
| ... | @@ -227,6 +254,10 @@ import SwiftEventBus | ... | @@ -227,6 +254,10 @@ import SwiftEventBus | 
| 227 | 254 | ||
| 228 | imageView.load(link: sm._logo, placeholder: UIImage(), cache: URLCache()) | 255 | imageView.load(link: sm._logo, placeholder: UIImage(), cache: URLCache()) | 
| 229 | 256 | ||
| 257 | + imageView.isAccessibilityElement = true | ||
| 258 | + imageView.accessibilityLabel = "Λογότυπο καταστήματος " + sm._name | ||
| 259 | + imageView.accessibilityTraits = .image | ||
| 260 | + | ||
| 230 | // Add image view to the stack view | 261 | // Add image view to the stack view | 
| 231 | stackView.addArrangedSubview(imageView) | 262 | stackView.addArrangedSubview(imageView) | 
| 232 | } | 263 | } | ... | ... | 
| ... | @@ -116,12 +116,14 @@ extension UIViewController { | ... | @@ -116,12 +116,14 @@ extension UIViewController { | 
| 116 | 116 | ||
| 117 | func setNavBarRightInfoButton(action: @escaping InfoButtonAction) { | 117 | func setNavBarRightInfoButton(action: @escaping InfoButtonAction) { | 
| 118 | // Create a UIView for the custom info button | 118 | // Create a UIView for the custom info button | 
| 119 | - let customInfoView = UIView(frame: CGRect(x: 0, y: 0, width: 24, height: 24)) | 119 | + // let customInfoView = UIView(frame: CGRect(x: 0, y: 0, width: 24, height: 24)) | 
| 120 | + let customInfoView = UIView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) | ||
| 120 | 121 | ||
| 121 | // Create the UIImageView for the custom info image | 122 | // Create the UIImageView for the custom info image | 
| 122 | let infoImageView = UIImageView(image: UIImage(named: "info_icon", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)) // Your custom image | 123 | let infoImageView = UIImageView(image: UIImage(named: "info_icon", in: MyEmptyClass.resourceBundle(), compatibleWith: nil)) // Your custom image | 
| 123 | infoImageView.contentMode = .scaleAspectFit // Adjust to fit the image correctly | 124 | infoImageView.contentMode = .scaleAspectFit // Adjust to fit the image correctly | 
| 124 | - infoImageView.frame = customInfoView.bounds // Set the image to fill the view | 125 | + // infoImageView.frame = customInfoView.bounds // Set the image to fill the view | 
| 126 | + infoImageView.frame = CGRect(x: 8, y: 8, width: 24, height: 24) | ||
| 125 | 127 | ||
| 126 | // Add the image view to the custom view | 128 | // Add the image view to the custom view | 
| 127 | customInfoView.addSubview(infoImageView) | 129 | customInfoView.addSubview(infoImageView) | 
| ... | @@ -133,6 +135,11 @@ extension UIViewController { | ... | @@ -133,6 +135,11 @@ extension UIViewController { | 
| 133 | let tapGesture = UITapGestureRecognizer(target: self, action: #selector(infoButtonTapped)) | 135 | let tapGesture = UITapGestureRecognizer(target: self, action: #selector(infoButtonTapped)) | 
| 134 | customInfoView.addGestureRecognizer(tapGesture) | 136 | customInfoView.addGestureRecognizer(tapGesture) | 
| 135 | 137 | ||
| 138 | + customInfoView.isAccessibilityElement = true | ||
| 139 | + customInfoView.accessibilityLabel = "Οδηγίες χρήσης" | ||
| 140 | + customInfoView.accessibilityHint = "Διπλό πάτημα για άνοιγμα" | ||
| 141 | + customInfoView.accessibilityTraits = .button | ||
| 142 | + | ||
| 136 | // Add the custom view to the navigation bar as a UIBarButtonItem | 143 | // Add the custom view to the navigation bar as a UIBarButtonItem | 
| 137 | let infoBarButtonItem = UIBarButtonItem(customView: customInfoView) | 144 | let infoBarButtonItem = UIBarButtonItem(customView: customInfoView) | 
| 138 | self.navigationItem.rightBarButtonItem = infoBarButtonItem | 145 | self.navigationItem.rightBarButtonItem = infoBarButtonItem | ... | ... | 
- 
Please register or login to post a comment
