似乎UITextFields将所有non-breaking spaces(nbsp,U + 00A0)转换为spaces(U + 0020)。这会导致编辑区域设置特定数字时出现问题。例如,在法国/法国语言环境中,非中断空格将1和%分开以形成“1%”。但是,由于UITextField将分隔符转换为空格,因此可识别语言环境的NSNumberFormatter无法解析语言环境字符串并将其转换为数字。
以下代码段说明了此问题。
NSLocale *fr_FR = [[[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"] autorelease];
NSNumberFormatter *percentageFormatter = [[NSNumberFormatter alloc] init];
[percentageFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[percentageFormatter setGeneratesDecimalNumbers:TRUE];
[percentageFormatter setNumberStyle:NSNumberFormatterPercentStyle];
[percentageFormatter setLocale:fr_FR];
NSDecimalNumber *one = [NSDecimalNumber decimalNumberWithString:@"0.01"];
// will be "1 %" where the separator character is a nbsp (this is correct)
NSString *percentage = [percentageFormatter stringFromNumber:one];
UITextField *textField = [[UITextField alloc] init];
textField.text = percentage;
// will be "1 %" where the separator character is a space (this is wrong)
NSString *textFieldValue = textField2.text;
// returns an indeterminate value: may throw an exception, may return nil, etc
// this should return the number 0.01
NSNumber *percentageNumber = [percentageFormatter numberFromString:textFieldValue];
我的问题:如何阻止UITextField将不间断空格转换为空格?
我理解我可以使用的工作来破解它,以便在我使用非破坏空间的语言环境中它可以工作。但是,如果我不知道要保留的UITextField的属性/行为,我想知道。
答案 0 :(得分:1)
我很确定此功能不存在。如何打开iPhone的错误报告?