gpt4 book ai didi

ios - 自定义 UISlider 的辅助功能

转载 作者:行者123 更新时间:2023-11-29 10:31:16 25 4
gpt4 key购买 nike

我用两个拇指创建了一个自定义范围的 UISlider。但是在 VoiceOver 模式下,我无法上下滑动来调整拇指。

UIAccessibilityElement *minElement = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self];
minElement.accessibilityFrame = [self convertRect:currentThumbRect
toView:nil];
minElement.accessibilityLabel = NSLocalizedString(@"Minimum", nil);
minElement.accessibilityTraits = UIAccessibilityTraitAdjustable;

[_accessibleElements addObject:minElement];

UIAccessibilityElement *maxElement = [[UIAccessibilityElement alloc]
initWithAccessibilityContainer:self];
maxElement.accessibilityFrame = [self convertRect:currentUpperThumbRect
toView:nil];
maxElement.accessibilityLabel = NSLocalizedString(@"Maximum", nil);
maxElement.accessibilityTraits = UIAccessibilityTraitAdjustable;

[_accessibleElements addObject:maxElement]

我在上面添加了代码,以便 VoiceOver 可以分别识别两个拇指,但我无法调整拇指。任何在 VoiceOver 中调整拇指的想法。


已解决的问题:

我使用“UIAccessibilityCustomAction”来添加自定义行为。不同于上下滑动来调整值,在自定义行为中上下滑动可用于选择操作并双击执行它。

UIAccessibilityElement *minElement = [[UIAccessibilityElement alloc] initWithAccessibilityContainer:self];
minElement.accessibilityLabel = NSLocalizedString(@"Minimum", nil);
UIAccessibilityCustomAction *increaseMinAction = [[UIAccessibilityCustomAction alloc] initWithName:NSLocalizedString(@"Increase minimum", @"action to increase min")
target:self selector:@selector(accessibilityMinIncrement)];
UIAccessibilityCustomAction *decreaseMinAction = [[UIAccessibilityCustomAction alloc] initWithName:NSLocalizedString(@"Decrease minimum", @"action to decrease min")
target:self selector:@selector(accessibilityMinDecrement)];
minElement.accessibilityCustomActions = @[increaseMinAction, decreaseMinAction];
[_accessibleElements addObject:minElement];

最佳答案

当用户向上或向下滑动时,将调用带有 accessibilityIncrementaccessibilityDecrement 的可调元素。发生这种情况时,预计会更改其 accessibilityValue。如果该值没有改变,VoiceOver 会将其解释为已达到可能值的边界(允许的最低值或高度值),并会播放“叮”声以指示用户手势无效。

一个普通的 UIAccessibilityElement 没有(据我所知)实现递增和递减方法,而且您似乎没有修改这些元素的值。因此,当用户关注其中一个元素时,该方法不会实现并且值不会更改,因此 VoiceOver 会播放“叮”声。

一个可能的解决方案是子类化并让每个旋钮元素保存当前值,或者让每个旋钮元素向委托(delegate)请求值并将递增和递减方法转发给该委托(delegate)。

关于ios - 自定义 UISlider 的辅助功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29464693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com