【问题标题】:UITextField autocapitalizationType UITextAutocapitalizationTypeAllCharacters not working on deviceUITextField autocapitalizationType UITextAutocapitalizationTypeAllCharacters 在设备上不起作用
【发布时间】:2013-07-26 11:06:07
【问题描述】:

您可以设置 UITextField 的 autocapitalizationType 属性,以便所有输入都是大写的。我发现它在模拟器上运行良好(当实际点击模拟器的键盘,而不是 Mac 的键盘时),但在设备上却不行?一切都保持小写。

在 UICatalog 演示中我添加了 textFieldNormal 方法:

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

还添加了一个委托,以显示 UITextField 的实际 autocapitalizationType:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog( @"textField.autocapitalizationType=%d", textField.autocapitalizationType );
}

它将正确显示 3 (=UITextAutocapitalizationTypeAllCharacters),但您点击的任何内容都保持小写。我错过了什么?

【问题讨论】:

    标签: ios6 uitextfield xcode4.6.3


    【解决方案1】:

    显然这是一个设备常规设置问题:设置 -> 常规 -> 键盘 -> 自动大写必须打开才能将 textField.autocapitalizationType 设置为全部大写,否则设置属性显然会被忽略。如果我打开它,一切都会按预期工作。

    【讨论】:

      【解决方案2】:

      你可以尝试这样的文本字段委托:

      -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
          if (range.length == 0) { // not deleting , but adding a char        
              textField.text = [textField.text stringByAppendingString:[string uppercaseString]];
              return NO;
          }
      
          return YES;
      }
      

      仅当您尝试在文本末尾插入符号时才有效。 如果你想玩中间的文字,你可以玩

      范围.位置

      而且您还需要调整光标定位,因为它每次都会在末尾...

      我希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多