1. 程式人生 > >iOS自定義輸入法之數字鍵盤

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

至此,就可以在點選文字輸入框的時候顯示自定義的數字鍵盤。