iOS:“.03 小时”文本的旁白不正确
Posted
技术标签:
【中文标题】iOS:“.03 小时”文本的旁白不正确【英文标题】:iOS: Voice Over doesn't read proper for ".03 hours" text 【发布时间】:2019-07-30 08:37:47 【问题描述】:我有以下任一格式的文本:
.03 小时
0.03 - 0.05 小时
在上述情况下,可访问性应采用以下格式:
点零三个小时
零点零三(人物名)零点零五小时
但在实际情况下,它的读数如下:
三个小时
零点零三零点五小时
就像我上面提到的,数字格式是从 json 响应中获取的字符串类型,它可能是任何格式,例如 0.03 小时、0.03 小时、0.03 - 0.05 小时、4 - 5 小时
为了解决这个问题,我尝试了很多类似下面的解决方案,但都没有成功
hoursLabel.accessibilityAttributedLabel = NSAttributedString(string: hoursLabel.text ?? "", attributes: [NSAttributedString.Key.accessibilitySpeechPunctuation: NSNumber(value: true)])
谁能帮帮我,如何解决这种情况。
在可能的情况下,它应该适用于所有其他单位,如 .03 (unit)
【问题讨论】:
【参考方案1】:数字格式是从 json 响应中获取的字符串类型,它可能是任何格式,例如 0.03 小时、0.03 小时、0.03 - .05 小时、4 - 5 小时
首先,您应该重新排列传入的数据,以便具有相同的定义格式。然后,您只需设置此格式,以便 VoiceOver 根据需要朗读。
以下是来自 complete 'date, time and numbers' explanation 的 ObjC 代码 sn-p:
@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
除非我误解了你的需要,否则你应该使用这个理由来达到你的目的。
【讨论】:
在可能的情况下,它应该适用于所有单位,不仅适用于像 .03 (unit) 这样的日期格式,而且更新的问题相同。 @AnjaneyuluBattula:我回答您最初的问题,该问题仅涉及小时数。现在,如果您添加其他要求,请创建另一个问题,但请不要通过修改您的目的来编辑您的问题,否则它是无止境的。 是的,我同意您的看法,并感谢您的回答,但我之前忘记添加单位,仅用于创建另一个可能认为重复的问题的单位。而您的答案未涵盖 0.03 - 0.05 小时 这种情况。如果您对此类问题有通用解决方案,请更新您的答案,这将对许多正在寻找此类解决方案的人有所帮助。 @AnjaneyuluBattula:如果这个新问题被认为是重复的,这意味着你处理时间的问题应该在这里被标记为接受,不是吗? ;o) 如果这个答案能像最初期望的那样持续几个小时,请根据您的不同需求调整它以避免重复问题。 你是对的,我知道的细节很少,这就是我要做的:1. 从 JSON 响应中提取你的数字,2. 应用并调整提供的代码 sn-ps每个人的链接(日期,时间和数字)。所提供的网站非常丰富的各种信息:不要犹豫,不时返回作为摘要。以上是关于iOS:“.03 小时”文本的旁白不正确的主要内容,如果未能解决你的问题,请参考以下文章