iOS自定义输入法之数字键盘

    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];

至此,就可以在点击文本输入框的时候显示自定义的数字键盘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值