编辑框textfield输入字符转大小写问题
2018年5月31日 周四
添加监听事件
[_textField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingDidEnd];
[_textField addTarget:self action:@selector(textFieldEditingChanged:) forControlEvents:UIControlEventEditingChanged];
正常情况下,在text改变的时候就进行转换,这也是我们期望的,然而实际上不一定如愿。
- (void)textFieldEditingChanged:(UITextField *)textFeild{
NSString *text = [textFeild.text uppercaseString];
if (self.textEditingChangedBlock) {
self.textEditingChangedBlock(text, self);
}
textFeild.text = text;
}
这跟跟self.textField.keyboardType = UIKeyboardType;有关系的。
1)当keyboard = UIKeyboardTypeASCIICapable 类型时,是可以直接进行转换的,如下图:
2)当keyboard = UIKeyboardTypeDefault 类型时,即默认类型,采用的是当前的输入方式,当前是中文输入法,依次点击了“QWE”,但是会发现编辑框里的内容是“QQWQWE”(具体啥原因不太清楚),如下图:
解决方法是,在编辑结束的时候进行转换
-(void)textFieldDidChanged:(UITextField *)textField {
if (self.textFieldDidChanged) {
self.textFieldDidChanged(textField);
}
}
[cell setTextFieldDidChanged:^(UITextField *textField) {
textField.text = [textField.text uppercaseString];
}];