键盘处于活动状态时,UITextView自动资本化无效

时间:2016-10-21 14:00:00

标签: ios objective-c swift uitextview

目前,我正在像这样的按钮目标中设置自动资本化

//This method is fired when keyboard is still active
- (IBAction)changeAutoCapitalization:(id)sender
{   
      self.textView.autocapitalizationType = UITextAutocapitalizationTypeWords;
}

但这不会使键盘变成资本。

3 个答案:

答案 0 :(得分:2)

修改UITextAutocapitalizationType后,您必须立即调用[self.textView reloadInputViews]才能立即更改键盘。

答案 1 :(得分:0)

尝试在初始化后添加:

self.textView.autocapitalizationType = UITextAutocapitalizationTypeWords;

OR

该设备上的“自动资本化”选项很可能已关闭。您可以在“设置”中找到该选项>一般>键盘。

答案 2 :(得分:0)

如果您发现要进行大量与文本相关的自定义,则将 UITextView 子类化可能会有所帮助,以保持功能封装。

<块引用>

注意:如果在模拟器上测试,请确保您使用的是 模拟器的键盘,通过进入菜单:I/O -> 键盘 -> 切换 软件键盘

如果您要自动添加文本,例如响应按钮点击,而 Shift 键关闭,那么您可以使用以下模式:

autocapitalizationType = .allCharacters //Activate shift key
autocorrectionType = .no //Don't show all-caps auto suggest
reloadInputViews() //Apply changes

然后,恢复到句子大写,例如当一行被清除时:

if (autocapitalizationType = .allcharacters) {
    autocapitalizationType = .sentences //Activate sentence capitalization
    autocorrectionType = .yes //Show auto suggest
    reloadInputViews() //Apply changes
}

其他大小写选项:

.none
.words

您可能还需要在按下任何非输入键时执行此操作。为此,请覆盖 insertText 中的 UIKeyInput,并检查输入的文本字符串:

if (text != "\n") {
    if (autocapitalizationType == .allCharacters) {
        autocapitalizationType = .sentences //Activate sentence capitalization
        autocorrectionType = .yes //Show auto suggest
        reloadInputViews() //Apply changes
    }

    //Respond to any character sequences
    //...
}