Showing
4 changed files
with
56 additions
and
1 deletions
... | @@ -193,6 +193,8 @@ import UIKit | ... | @@ -193,6 +193,8 @@ import UIKit |
193 | // discriptionLabel.text = htmlText.htmlToString | 193 | // discriptionLabel.text = htmlText.htmlToString |
194 | discriptionLabel.text = couponSetData?.inner_text ?? "" | 194 | discriptionLabel.text = couponSetData?.inner_text ?? "" |
195 | expirationLabel.text = "Ισχύει έως "+(coupon.expiration ?? "") | 195 | expirationLabel.text = "Ισχύει έως "+(coupon.expiration ?? "") |
196 | + | ||
197 | + setupAccessibilty(name: nameLabel.text ?? "", discount: dicountLabel.text ?? "", description: discriptionLabel.text ?? "", expirationString: "", expirationDate: (coupon.expirationDate)) | ||
196 | } | 198 | } |
197 | 199 | ||
198 | func configureCell(coupon: swiftApi.CouponItemModel, isMarket: Bool) { | 200 | func configureCell(coupon: swiftApi.CouponItemModel, isMarket: Bool) { |
... | @@ -334,6 +336,8 @@ import UIKit | ... | @@ -334,6 +336,8 @@ import UIKit |
334 | discriptionLabel.text = htmlText.htmlToString | 336 | discriptionLabel.text = htmlText.htmlToString |
335 | // discriptionLabel.text = coupon.inner_text ?? "" | 337 | // discriptionLabel.text = coupon.inner_text ?? "" |
336 | 338 | ||
339 | + let expirationString = expirationLabel.text == "Το κουπόνι έληξε" ? "Το κουπόνι έληξε" : "" | ||
340 | + setupAccessibilty(name: nameLabel.text ?? "", discount: dicountLabel.text ?? "", description: discriptionLabel.text ?? "", expirationString: expirationString, expirationDate: (coupon.expirationDate)) | ||
337 | } | 341 | } |
338 | 342 | ||
339 | func configureCell(coupon: swiftApi.CouponItemModel, isSMCoupon: Bool) { | 343 | func configureCell(coupon: swiftApi.CouponItemModel, isSMCoupon: Bool) { |
... | @@ -378,6 +382,34 @@ import UIKit | ... | @@ -378,6 +382,34 @@ import UIKit |
378 | // discriptionLabel.text = htmlText.htmlToString | 382 | // discriptionLabel.text = htmlText.htmlToString |
379 | discriptionLabel.text = couponSetData?.inner_text ?? "" | 383 | discriptionLabel.text = couponSetData?.inner_text ?? "" |
380 | expirationLabel.text = "Ισχύει έως "+(coupon.expiration ?? "") | 384 | expirationLabel.text = "Ισχύει έως "+(coupon.expiration ?? "") |
385 | + | ||
386 | + setupAccessibilty(name: nameLabel.text ?? "", discount: dicountLabel.text ?? "", description: discriptionLabel.text ?? "", expirationString: "", expirationDate: (coupon.expirationDate)) | ||
387 | + } | ||
388 | + | ||
389 | + func setupAccessibilty (name: String, discount: String, description: String, expirationString: String, expirationDate: Date?) { | ||
390 | + var formatedExpiration = "" | ||
391 | + if (expirationString.isEmpty) { | ||
392 | + let dateFormatter = DateFormatter() | ||
393 | + // dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" | ||
394 | + dateFormatter.locale = Locale(identifier: "en_US_POSIX") | ||
395 | + if let date = expirationDate { | ||
396 | + // Set output format in Greek | ||
397 | + dateFormatter.locale = Locale(identifier: "el_GR") // Greek locale | ||
398 | + dateFormatter.dateFormat = "d MMMM yyyy" | ||
399 | + let resultString = dateFormatter.string(from: date) | ||
400 | + formatedExpiration = "Ισχύει έως " + resultString | ||
401 | + } else { | ||
402 | + formatedExpiration = expirationString | ||
403 | + } | ||
404 | + | ||
405 | + } else { | ||
406 | + formatedExpiration = expirationString | ||
407 | + } | ||
408 | + | ||
409 | + self.isAccessibilityElement = true | ||
410 | + self.accessibilityLabel = name + ", " + discount + ", " + description + ", " + formatedExpiration | ||
411 | + self.accessibilityHint = "Διπλό πάτημα για άνοιγμα" | ||
412 | + self.accessibilityTraits = .button | ||
381 | } | 413 | } |
382 | 414 | ||
383 | // Configure the cell with visibility of the selectView, a selected state, and select Button Action | 415 | // Configure the cell with visibility of the selectView, a selected state, and select Button Action | ... | ... |
... | @@ -44,6 +44,9 @@ import SwiftEventBus | ... | @@ -44,6 +44,9 @@ import SwiftEventBus |
44 | tableView.delegate = self | 44 | tableView.delegate = self |
45 | tableView.dataSource = self | 45 | tableView.dataSource = self |
46 | 46 | ||
47 | + // Temporarily disable the table view's accessibility to prevent immediate focus shift | ||
48 | + self.tableView.accessibilityElementsHidden = true | ||
49 | + | ||
47 | // tableView.clipsToBounds = true | 50 | // tableView.clipsToBounds = true |
48 | // tableView.layer.cornerRadius = 30 | 51 | // tableView.layer.cornerRadius = 30 |
49 | // tableView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius | 52 | // tableView.layer.maskedCorners = [ .layerMinXMinYCorner] // Top left corner radius |
... | @@ -65,6 +68,19 @@ import SwiftEventBus | ... | @@ -65,6 +68,19 @@ import SwiftEventBus |
65 | self.navigationController?.hideHairline() | 68 | self.navigationController?.hideHairline() |
66 | } | 69 | } |
67 | 70 | ||
71 | + public override func viewDidAppear(_ animated: Bool) { | ||
72 | + super.viewDidAppear(animated) | ||
73 | + | ||
74 | +// DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { | ||
75 | + UIAccessibility.post(notification: .screenChanged, argument: self.navigationItem.titleView) | ||
76 | +// } | ||
77 | + | ||
78 | + // Re-enable table view accessibility after the announcement | ||
79 | + DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { | ||
80 | + self.tableView.accessibilityElementsHidden = false | ||
81 | + } | ||
82 | + } | ||
83 | + | ||
68 | // MARK: - Functions | 84 | // MARK: - Functions |
69 | func handleEmptyView() { | 85 | func handleEmptyView() { |
70 | if (self.coupons.count == 0) { | 86 | if (self.coupons.count == 0) { |
... | @@ -75,7 +91,7 @@ import SwiftEventBus | ... | @@ -75,7 +91,7 @@ import SwiftEventBus |
75 | self.emptyViewHeight.constant = 0 | 91 | self.emptyViewHeight.constant = 0 |
76 | } | 92 | } |
77 | } | 93 | } |
78 | - | 94 | + |
79 | // MARK: - API Functions | 95 | // MARK: - API Functions |
80 | func getCouponsRequest() { | 96 | func getCouponsRequest() { |
81 | swiftApi().getCouponsAsync(getCouponsCallback, failureCallback: {errorCode in | 97 | swiftApi().getCouponsAsync(getCouponsCallback, failureCallback: {errorCode in | ... | ... |
... | @@ -53,6 +53,10 @@ extension UIViewController { | ... | @@ -53,6 +53,10 @@ extension UIViewController { |
53 | if let imgBackArrow = UIImage(named: icon, in: MyEmptyClass.resourceBundle(), compatibleWith: nil) { | 53 | if let imgBackArrow = UIImage(named: icon, in: MyEmptyClass.resourceBundle(), compatibleWith: nil) { |
54 | imageView.image = imgBackArrow | 54 | imageView.image = imgBackArrow |
55 | } | 55 | } |
56 | + view.isAccessibilityElement = true | ||
57 | + view.accessibilityLabel = "Πίσω" | ||
58 | + view.accessibilityHint = "Διπλό πάτημα για άνοιγμα" | ||
59 | + view.accessibilityTraits = .button | ||
56 | view.addSubview(imageView) | 60 | view.addSubview(imageView) |
57 | 61 | ||
58 | let backTap = UITapGestureRecognizer(target: self, action: #selector(moveToBack(_:))) | 62 | let backTap = UITapGestureRecognizer(target: self, action: #selector(moveToBack(_:))) | ... | ... |
... | @@ -841,6 +841,7 @@ public class swiftApi { | ... | @@ -841,6 +841,7 @@ public class swiftApi { |
841 | public let name: String? | 841 | public let name: String? |
842 | public let image: String? | 842 | public let image: String? |
843 | public let expiration: String? | 843 | public let expiration: String? |
844 | + public let expirationDate: Date? | ||
844 | public let created: String? | 845 | public let created: String? |
845 | public let description: String? | 846 | public let description: String? |
846 | public let discount: String? | 847 | public let discount: String? |
... | @@ -944,8 +945,10 @@ public class swiftApi { | ... | @@ -944,8 +945,10 @@ public class swiftApi { |
944 | dateFormatter.dateFormat = "dd/MM/yyyy" | 945 | dateFormatter.dateFormat = "dd/MM/yyyy" |
945 | let resultString = dateFormatter.string(from: date) | 946 | let resultString = dateFormatter.string(from: date) |
946 | self.expiration = resultString | 947 | self.expiration = resultString |
948 | + self.expirationDate = date | ||
947 | } else { | 949 | } else { |
948 | self.expiration = "" | 950 | self.expiration = "" |
951 | + self.expirationDate = Date() | ||
949 | } | 952 | } |
950 | 953 | ||
951 | let createdString = dictionary["created"] as? String? ?? "" | 954 | let createdString = dictionary["created"] as? String? ?? "" | ... | ... |
-
Please register or login to post a comment