代码之家  ›  专栏  ›  技术社区  ›  shek

UITextField是否将非中断空格转换为空格?

  •  4
  • shek  · 技术社区  · 16 年前

    似乎所有字段都可以转换 non-breaking spaces (nbsp,U+00A0)至 spaces (U+0020)。这会导致编辑特定于区域设置的数字时出现问题。例如,在French/France语言环境中,不间断空格分隔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将非中断空格转换为空格?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Aaron Digulla    16 年前