iOS自定義輸入法之數字鍵盤
阿新 • • 發佈:2019-01-30
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];
至此,就可以在點選文字輸入框的時候顯示自定義的數字鍵盤。