【问题标题】:Programmatically switch keyboard from uppercase to lowercase以编程方式将键盘从大写切换到小写
【发布时间】:2013-02-27 06:43:59
【问题描述】:

我想将用户的键盘从大写变为小写以强制输入小写。我该怎么做?

【问题讨论】:

  • 您可以获取包含键盘的 UIWindow,并使用几个非常非常非法的石英 API 来模拟大写键附近的触地。或者,只是让 iOS 的文本控件通过将其设置为 capitalizationType 来处理它。任君挑选。
  • @CodaFi 的问题是,当我调用textView shouldChangeTextInRange 并使用我的自定义方法更新 textView 然后return NO; 在第一个键之后,代码永远不会被调用来关闭大写键按下(比如将句子的第一个字母大写)。所以我需要做我的自定义方法,通过添加用户键入的文本覆盖 iOS,然后仍然返回所有其他方法。
  • First letter in UiTextField lowercase 的可能副本。你把事情复杂化了,这永远都不好。

标签: ios objective-c keyboard capitalize


【解决方案1】:

textField.autocapitalizationType = .none

快速

【讨论】:

    【解决方案2】:

    textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

    【讨论】:

      【解决方案3】:

      不要试图强制键盘为小写,而是在用户键入后强制字符为小写。

      您没有说明您使用的是UITextField 还是UITextView。假设您使用的是UITextField

      声明您的视图控制器采用UITextFieldDelegate 协议,并将文本字段的委托设置为视图控制器。

      在视图控制器中,实现这个方法:

      - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
          string = [string lowercaseString];
          textField.text = [textField.text stringByReplacingCharactersInRange:range
              withString:string];
          return NO;
      }
      

      如果您使用的是UITextView,请采用UITextViewDelegate 协议并实现textView:shouldChangeTextInRange:replacementText: 方法。

      【讨论】:

        【解决方案4】:

        您可以做的是在关闭键盘后将文本框的字符串变为小写。例如,

        [sender resignFirstResponder];
        textField.text = textField.text.lowercaseString;
        

        当他们关闭键盘时,这会使文本变为小写,这就是你想要的。

        【讨论】:

        • 这会很好,除了,我现在更改他们的文本的方式会在他们按下每个键后强制大写锁定打开......但是用户可能希望一些字母大写但截至现在无论他们是否打开或关闭它都会在每个键被按下后强制打开。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-02-07
        • 2013-07-19
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        相关资源
        最近更新 更多