一般,当我们需要限制textfield的输入字符限制时,调用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string方法来实现,比如:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (self.rename == textField) //判断是否时我们想要限定的那个输入框
{
NSString * toBeString = [self.rename.text stringByReplacingCharactersInRange:range withString:string];
if (range.location >= 8)
{
return NO;
}
return YES;
}
但是,这带来了一个问题,就是如果当我们输入中文拼音时,拼音的输入会因为剩余字符的限制导致不能输入,而且在iOS中,拼音输入还占据两个字符!(真要命@#¥%)这就会导致很尴尬的问题,尤其当限制的数量比较小时(比如上面例子中的8),可能输如五个拼音就不能继续输入了,有木有大神知道怎么解决这个问题的,我是新手,最好的能说的详细一点,或者提供解决思路也行。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (self.rename == textField) //判断是否时我们想要限定的那个输入框
{
NSString * toBeString = [self.rename.text stringByReplacingCharactersInRange:range withString:string];
if (range.location >= 8)
{
return NO;
}
return YES;
}
但是,这带来了一个问题,就是如果当我们输入中文拼音时,拼音的输入会因为剩余字符的限制导致不能输入,而且在iOS中,拼音输入还占据两个字符!(真要命@#¥%)这就会导致很尴尬的问题,尤其当限制的数量比较小时(比如上面例子中的8),可能输如五个拼音就不能继续输入了,有木有大神知道怎么解决这个问题的,我是新手,最好的能说的详细一点,或者提供解决思路也行。
解决方案 »
- 拖动tableview把cell里textview的内容都清空了
- MKMapView 响应touchesbegan事件
- 在XP(x86)上使用Virtual Box 安装MAC OS 10.6的问题
- 求dreamweaver cs5.5 for mac 的下载地址或者安装包,谢了!!!
- 关于ARC的疑问.求指教啊.
- 好几年没有在csdn发帖了,回到这里又回到了上学时代的感觉,现在遇到一点麻烦,希望得到各位大神的帮助,小弟在这感激不尽
- 大神的进
- 步伐企业版ipa,下载提示“无法下载应用程序,此时无法安装”
- iOS pod install问题
- 求助!怎样让xcode识别component中没有的版本?
- 我是嵌入式C软件开发者,工作2年,要是从零开始开发IOS的APP,要多久能成型?
- 关于ios中动态数组问题请教
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(limitTextField:) name:@"UITextFieldTextDidChangeNotification" object:myTextField];
Then in the same class add:- (void)limitTextField:(NSNotification *)note {
int limit = 20;
if ([[myTextField stringValue] length] > limit) {
[myTextField setStringValue:[[myTextField stringValue] substringToIndex:limit]];
}
}
Then link up the outlet myTextField to your UITextField and it will not let you add any more characters after you hit the limit. Be sure to add this to your dealloc method:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:myTextField];
int limit = 20;
根据需要改字数限制试试...
int limit = 20;
根据需要改字数限制试试...
改过了,就是输到limit数量的拼音,字符串会自己断掉,抓狂
2.根据你限制的个数计算出字符所需的宽度(可以用label,高度固定,宽度无限的情况),再将输入的字符串计算出宽度,进行比较