Merge branch 'develop' of https://gitlab.verizon.com/BPHV_MIPS/vds_ios into feature/buttonIcon
This commit is contained in:
commit
cac411b03f
@ -1241,7 +1241,7 @@
|
||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 51;
|
||||
CURRENT_PROJECT_VERSION = 53;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
@ -1278,7 +1278,7 @@
|
||||
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 51;
|
||||
CURRENT_PROJECT_VERSION = 53;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
|
||||
@ -201,8 +201,8 @@ extension ButtonGroup: UICollectionViewDataSource, UICollectionViewDelegate {
|
||||
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||||
let button = buttons[indexPath.row]
|
||||
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectionViewCell", for: indexPath) as? ButtonGroupCollectionViewCell else { return UICollectionViewCell() }
|
||||
cell.subviews.forEach { $0.removeFromSuperview() }
|
||||
cell.addSubview(button)
|
||||
cell.contentView.subviews.forEach { $0.removeFromSuperview() }
|
||||
cell.contentView.addSubview(button)
|
||||
button.pinToSuperView()
|
||||
if hasDebugBorder {
|
||||
cell.addDebugBorder()
|
||||
|
||||
@ -80,6 +80,8 @@ open class TextLinkCaret: ButtonBase {
|
||||
open override func setup() {
|
||||
super.setup()
|
||||
accessibilityTraits = .link
|
||||
titleLabel?.numberOfLines = 0
|
||||
titleLabel?.lineBreakMode = .byWordWrapping
|
||||
}
|
||||
|
||||
/// Used to make changes to the View based off a change events or from local properties.
|
||||
|
||||
@ -120,11 +120,12 @@ open class Loader: View {
|
||||
|
||||
// setup timer for post
|
||||
loadingTimer = Timer.scheduledTimer(withTimeInterval: 60, repeats: true) { [weak self] _ in
|
||||
self?.accessibilityLabel = "Still Loading"
|
||||
guard let self, self.isActive, self.isVisibleOnScreen else { return }
|
||||
self.accessibilityLabel = "Still Loading"
|
||||
UIAccessibility.post(notification: .announcement, argument: "Still Loading")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private func stopAnimating() {
|
||||
isAccessibilityElement = false
|
||||
icon.isHidden = true
|
||||
@ -132,7 +133,7 @@ open class Loader: View {
|
||||
loadingTimer?.invalidate()
|
||||
loadingTimer = nil
|
||||
}
|
||||
|
||||
|
||||
deinit {
|
||||
stopAnimating()
|
||||
}
|
||||
|
||||
@ -171,6 +171,8 @@ open class Tabs: View {
|
||||
/// Called once when a view is initialized and is used to Setup additional UI or other constants and configurations.
|
||||
open override func setup() {
|
||||
super.setup()
|
||||
isAccessibilityElement = false
|
||||
|
||||
scrollView = UIScrollView()
|
||||
scrollView.translatesAutoresizingMaskIntoConstraints = false
|
||||
scrollView.showsHorizontalScrollIndicator = false
|
||||
@ -262,6 +264,7 @@ open class Tabs: View {
|
||||
model.onClick?(tab.index)
|
||||
self.selectedIndex = tab.index
|
||||
self.onTabDidSelect?(tab.index)
|
||||
let t = tabViews[tab.index]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -301,7 +304,7 @@ open class Tabs: View {
|
||||
tabItem.orientation = orientation
|
||||
tabItem.surface = surface
|
||||
tabItem.indicatorPosition = indicatorPosition
|
||||
tabItem.accessibilityHint = "\(index+1) of \(tabViews.count) Tabs"
|
||||
tabItem.accessibilityValue = "\(index+1) of \(tabViews.count) Tabs"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -77,6 +77,7 @@ open class TitleLockup: View {
|
||||
/// Label used to render the title model.
|
||||
open var titleLabel = Label().with {
|
||||
$0.setContentCompressionResistancePriority(.required, for: .vertical)
|
||||
$0.accessibilityTraits.insert([.header])
|
||||
}
|
||||
|
||||
/// Model used in rendering the title label.
|
||||
|
||||
@ -24,4 +24,30 @@ extension UIView {
|
||||
public func setAccessibilityLabel(for views: [UIView]) {
|
||||
accessibilityLabel = combineAccessibilityLabel(for: views)
|
||||
}
|
||||
|
||||
/// Will tell if the view is actually visibile on screen, also it will check the hierarchy above this view.
|
||||
public var isVisibleOnScreen: Bool {
|
||||
// Ensure the view has a window, meaning it's part of the view hierarchy
|
||||
guard let window = self.window, !self.isHidden, self.alpha > 0 else {
|
||||
return false
|
||||
}
|
||||
|
||||
// Check if the view's frame intersects with the window's bounds
|
||||
let viewFrameInWindow = self.convert(self.bounds, to: window)
|
||||
var isIntersecting = viewFrameInWindow.intersects(window.bounds)
|
||||
|
||||
// Check parent views for visibility
|
||||
var currentView: UIView? = self
|
||||
while let view = currentView, isIntersecting {
|
||||
// If any parent has a constraint making it effectively invisible, set isIntersecting to false
|
||||
if view.bounds.size.width == 0 || view.bounds.size.height == 0 {
|
||||
isIntersecting = false
|
||||
break
|
||||
}
|
||||
currentView = view.superview
|
||||
}
|
||||
|
||||
return isIntersecting
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,3 +1,15 @@
|
||||
1.0.54
|
||||
----------------
|
||||
- CXTDT-518373 Accessibility Voiceover is reading “Still Loading” after waiting for a short time in all the screens.
|
||||
|
||||
1.0.53
|
||||
----------------
|
||||
- ONEAPP-4683 - Updated to accesibilityValue for the tabs position.
|
||||
|
||||
1.0.52
|
||||
----------------
|
||||
- ONEAPP-6244 - TitleLockup TitleLabel marked as .heading for Accessibility.
|
||||
|
||||
1.0.51
|
||||
----------------
|
||||
- ONEAPP-6239 - Loader is still showing when inactive.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user