iOS:“。03小时”文字无法正确显示Voice Over

时间:2019-07-30 08:37:47

标签: ios objective-c accessibility voiceover uiaccessibility

我有以下两种格式的文本:

.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(单位)

)中使用

1 个答案:

答案 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

除非我误解了您的需求,否则您应该使用此原理达到目的。