iOS中最常用的输入控件有UITextFiled和UITextView,当有特殊需要的时候我们会用到自定义的输入法。
下面简单介绍创建一个只用于输入数字的输入法。
1.创建一个基于UIView的类myInputView,添加0-9十个按钮(tag值为10000-10009),再添加一个删除按钮和退格按钮。
点击数字按钮响应(inPutNumber)方法,这里把button传过来
//输入
-(void)inPutNumber:(UIButton *)aButton{
int aNumber=aButton.tag-9999;//获取按钮的Tag值
[_textFiled insertText:[NSString stringWithFormat:@"%d",aNumber]];//转换为字符串后插入到光标位置
}
删除按钮的响应方法很简单,设为Nil就行了。
退格虽然系统有专门的方法,但是每次只能删除最后一个字符,这里创建一个可以在中间删除任意字符的方法。
//退格
-(void)inputBackSpace{
UITextRange *rang=[_textFiled selectedTextRange];//获取所选的Range
UITextPosition *start1= rang.start;//得到该Range的起始位置
NSString *str1=[NSString stringWithFormat:@"%@",start1.description];//获取start1的信息并保存到一个字符串中
NSArray *strArray=[str1 componentsSeparatedByString:@","];//获取用 ","分离出的字符串数组
int cursorIndex=[strArray[1] intValue];//获取光标在文本中的位置
if (cursorIndex>=1) { //判断光标位置是否为1,如果光标位置小于1执行下面的语句会导致光标从文本框中消失
start1 = [_textFiled positionFromPosition:start1 offset:-1];//将光标位置左移一位
UITextRange *newRang=[_textFiled textRangeFromPosition:start1 toPosition:rang.end ];//得到新的selectedTextRange,包含一个字符
[_textFiled replaceRange:newRang withText:@""];//用空串替换新的selectedTextRange
}
}
2.在UIViewController中分别创建一个myInputView对象(textFiled1)和UITextField对象(myKeyboard),并添加以下两条语句
[textFiled1 setInputView:myKeyboard];
[myKeyboard setTextFiled:textFiled1];
至此,就可以在点击文本输入框的时候显示自定义的数字键盘。