我有以下两种格式的文本:
.03小时
0.03-0.05小时
在上述情况下,可访问性应采用以下格式:
点零三个小时
零点零三(字符名称)零点零五小时
但是在实际情况下,它的读数如下:
三个小时
零点零三个零点五个小时
就像我上面提到的那样,数字格式是从json响应中获取的字符串类型,它的格式可以是0.03小时,.03小时,.03-.05小时,4-5小时
为解决此问题,我尝试了以下多种解决方案,但没有运气
hoursLabel.accessibilityAttributedLabel = NSAttributedString(string: hoursLabel.text ?? "", attributes: [NSAttributedString.Key.accessibilitySpeechPunctuation: NSNumber(value: true)])
任何人都可以帮助我,如何解决这种情况。
在某些情况下,它应该可以在所有其他单位(如 .03(单位)
)中使用答案 0 :(得分:2)
数字格式是从json响应中获取的字符串类型,它可以采用任何格式,例如0.03小时,.03小时,.03-.05小时,4-5小时
首先,您应该重新排列传入的数据,以便具有相同的定义格式。然后,您只需要设置此格式即可由VoiceOver读出即可。
Hereunder,此complete 'date, time and numbers' explanation的ObjC代码片段:
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel * hourLabel;
@end
@implementation ViewController
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"0.HH"];
NSDate * date = [dateFormatter dateFromString:@"0.05"];
_hourLabel.text = [NSDateFormatter localizedStringFromDate:date
dateStyle:NSDateFormatterNoStyle
timeStyle:NSDateFormatterShortStyle];
NSDateComponents * hourComponents = [[NSCalendar currentCalendar] components:NSCalendarUnitHour
fromDate:date];
_hourLabel.accessibilityLabel = [NSDateComponentsFormatter localizedStringFromDateComponents:hourComponents
unitsStyle:NSDateComponentsFormatterUnitsStyleSpellOut];
}
@end
除非我误解了您的需求,否则您应该使用此原理达到目的。