首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIKeyboard启用大写锁定

UIKeyboard启用大写锁定
EN

Stack Overflow用户
提问于 2010-04-25 23:40:53
回答 1查看 4.2K关注 0票数 1

我需要我的用户输入一些像DF-DJSL这样的数据,所以我在代码中放入如下内容:

代码语言:javascript
复制
theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

但不幸的是,首先输入的字母是大写字母,但在键入后立即输入字母,连字符将是小写,然后其余字母将返回大写,从而产生如下输出(除非用户在键入连字符后手动点击shift按钮):DF-dJSL

我该如何解决这个问题呢?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-04 22:14:54

您没有提到您正在使用哪个SDK,但是相对于3.0和更高版本,我看到了您想要的行为。

也就是说,当他们使用委托中的textFieldDidEndEditing方法完成编辑时,您始终可以将文本更改为大写:

代码语言:javascript
复制
- (void)textFieldDidEndEditing:(UITextField *)textField {
    NSString *textToUpper = [textField.text uppercaseString];   
    [theTextField setText:textToUpper];
}

或者,通过在文本字段更改时设置通知,您可以在键入文本时更改文本:

代码语言:javascript
复制
// setup the UITextField
{
    theTextField.delegate = self;
    theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
    [theTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}

由于与UISearchBar不同,UITextField不实现textDidChange.,因此您必须这样做也许是这样的吧?

代码语言:javascript
复制
- (void)textFieldDidChange:(UITextField *)textField {
    NSRange range = [textField.text rangeOfString : @"-"];
    if (range.location != NSNotFound) {
        theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2708775

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档