在我的應用程序中,我有一個文本字段,需要從用戶輸入一些數字,所以我將鍵盤類型設置爲「數字鍵盤」,但現在我被卡住了,應該如何解除它,當用戶完成輸入時。我知道我必須使用委託方法「textfieldShouldReturn」,但問題是,數字鍵盤沒有返回鍵。所以是否有必要在鍵盤上添加一個自定義的完成鍵還是有一些其他的出路?解除數字鍵盤
解除數字鍵盤
回答
您需要添加一個背景自來水
-(IBAction)backGroundTap:(id)sender
在點小時,然後在點M檔
-(IBAction)backGroundTap:(id)sender
[nameField resignFirstResponder];
[numberField resignFirstResponder];
thx紫色.......但是什麼是backgroundtap和nameField是文本字段的名稱?這裏nameField是什麼? – Siddharth 2010-06-27 11:00:00
UITapGestureRecognizer * tapBackground = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapBackground :)]; [self.view addGestureRecognizer:tapBackground]; – 2014-04-28 11:58:36
要添加背景輕拍手勢識別器 – 2014-04-28 11:59:17
另一個解決方案 - 添加inputAccessoryView
到yourNumberTextFiled
- (void)viewDidLoad
{
[super viewDidLoad];
UIToolbar* numberToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
numberToolbar.barStyle = UIBarStyleBlackTranslucent;
numberToolbar.items = [NSArray arrayWithObjects:
[[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)],
[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
[[UIBarButtonItem alloc]initWithTitle:@"Apply" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
nil];
[numberToolbar sizeToFit];
numberTextField.inputAccessoryView = numberToolbar;
}
-(void)cancelNumberPad{
[numberTextField resignFirstResponder];
numberTextField.text = @"";
}
-(void)doneWithNumberPad{
NSString *numberFromTheKeyboard = numberTextField.text;
[numberTextField resignFirstResponder];
}
如果您知道要輸入的號碼的長度(例如,一個4位數的PIN碼),您可以在輸入4個鍵後自動關閉鍵盤。
我打了一個問題辭職第一響應後4個按鍵(它會忽略過去的按鍵,如果你辭職後返回YES,所以我加了一個異步延遲到辭職。
此代碼是在的UITextField委託:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// max 4 keypresses
if(range.location == 3){
// async workaround for can't return YES after resignFirstResponder
[self performSelector:@selector(closeKeypad:)
withObject:textField
afterDelay:0.1
];
}
else if(range.location > 3){
return NO;
}
return YES;
}
-(void) closeKeypad:(UITextField*)textField {
[textField resignFirstResponder];
}
另一種解決方案是很容易實現,並且正在爲改變輸入焦點或解僱鍵盤
實現此功能(和委託UITextFieldDelegate):
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
然後,當你想關閉該鍵盤或改變焦點,你只需要調用一個這樣的通知:
[self performSelector:@selector(focusNextField:) withObject:textField afterDelay:0.1];
最後,解僱就這一個鍵盤:
- (void) focusNextField:(UITextField *) textField
{
[textField resignFirstResponder];
// some code
}
沒有別的!
- 1. 數字鍵盤解除?
- 2. 解除從UIScrollView NumberPad鍵盤
- 3. 的Javascript數字小鍵盤碼解析
- 4. 關閉鍵盤數字鍵盤
- 5. 鍵盤與中間的數字鍵盤?
- 6. iPad數字鍵盤
- 7. 鍵盤外觀默認爲解除UIKeyboardAppearanceDefault
- 8. 如何解除多個UITextField的鍵盤
- 9. 解除定製UITextField上的鍵盤
- 10. 解除iPhone鍵盤動態UITableView
- 11. 解除UIAlertController上的鍵盤UITextField
- 12. 鍵盤解除內存泄漏
- 13. 如何解除UIWebView上的鍵盤?
- 14. resignFirstResponder不解除UITextField的ASCII鍵盤
- 15. 有條件地解除鍵盤問題
- 16. 鍵盤數字線與鍵盤的數字
- 17. 用數字鍵盤改變鍵盤的文字板
- 18. 鍵盤不解釦
- 19. ios刪除鍵盤
- 20. 處理數字鍵盤的藍牙鍵盤的返回鍵
- 21. 數字鍵盤鍵盤不顯示返回鍵中的iPhone
- 22. 書寫數字鍵盤
- 23. 數字鍵盤實現
- 24. 顯示數字小鍵盤
- 25. Disapperiang IPhone數字鍵盤
- 26. 軟鍵盤 - 數字只有
- 27. Archlinux shift +數字小鍵盤
- 28. 默認iPhone數字鍵盤
- 29. 自定義數字鍵盤
- 30. 鍵盤只顯示數字
[How to show button'Done'on number pad on iPhone?](http://stackoverflow.com/questions/584538/how-to-show-button-done-on-number-pad-在iPhone上) – kennytm 2010-06-27 10:48:25
但肯尼在那個答案它提到,我們必須添加返回鍵我想知道我們不這樣做,而不添加完成鍵 – Siddharth 2010-06-27 10:50:54
當然,你可以做到沒有完成鍵,只需創建一個方法來' resignFirstResponder'(如[@PurplePilot](http://stackoverflow.com/questions/3127104/dismissing-number-pad/3127138#3127138)的答案。) – kennytm 2010-06-27 11:00:50