2011-06-01 4 views
1

キーボードのタイプがUIKeyboardTypeNumberPadの場合、入力が完了したことをユーザーがどのように示すと思われますか?戻る/完了ボタンがないので、ユーザーがキーボードを却下することをどのように知っていますか? ありがとうUIKeyboardTypeNumberPadキーボードを解除する

答えて

1

キーパッドの外にあるキャンセル/非表示ボタン(キーパッドの外側)を指定するか、キーパッドの外に触れても非表示にすることができます。これらの2つは一般的なプラクティスです。

0

これを試してください。それはあなたを助けるかもしれない 画面に触れたときにキーパッドを非表示にする。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 

} 
2

この問題をしばらく調査したところ、本当に満足のいく回答は見つかりませんでした。解決策の中には「完了」ボタンをハックするものがありますが、ローカライズされたアプリケーションではうまく機能しません。私のアプリは言葉を使わないので、私は間違いなく "完了"ボタンを望んでいません。

taskinoで述べたように、ビューを他の場所にタッチした場合、編集を終了すると便利です。それは私がやったことだ、とここに詳細を示すコードです:

は、プログラムTextFieldを作成:ビューの

- (void)c1Update { 
    [[self brain] setC1:[c1Value.text intValue]]; // update the model 
} 

ジェスチャー認識:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self updateViewColors]; 

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped)]; 
    tapRecognizer.numberOfTapsRequired = 1; 
    [self.view addGestureRecognizer:tapRecognizer]; 
} 

- (void) viewTapped { 
    if (c1Value.isFirstResponder) {[c1Value resignFirstResponder];} // dismisses keyboard, which causes c1Update to invoke. 
} 
をc1Updateに何が起こる

aTextField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
[aTextField addTarget:self action:@selector(c1Update) forControlEvents:UIControlEventEditingDidEnd]; 
aTextField.keyboardType = UIKeyboardTypeNumberPad; 
[yourView addSubview:aTextField]; 
c1Value = aTextField; // I like to keep a pointer for UI updates, alpha etc. 

+0

これは、ビュー内の他の場所のボタンに触れることを防ぎます。 –

関連する問題