3

ユーザー/パスワードのログイン制御にUITableViewを使用しています。現在、ログインボタンとともにビューの唯一のコントロールです。内部をクリックすると、テキスト編集コンテンツがアクティブになり、キーボードがポップアップして入力できます。ただし、編集を停止する方法はありません。UIViewの白い領域の外側をクリックして、UITableVIew内のテキストエディタからフォーカスを外し、キーボードが再び非表示になるようにします。

それ、どうやったら出来るの?

4

3 に答える 3

5

アルファチャネルがゼロに等しいボタンを追加できます。ログインとパスワードのフィールドの後ろにあります。次の方法で、このボタンにアクションを設定します。

-(void)hideKeyboard:(id)sender
{
   [self.username resignFirstResponder];
   [self.password resignFirstResponder];
}
于 2012-05-08T14:57:09.860 に答える
3

ビューコントローラにviewDidLoadキーボード通知をリッスンさせ、tableViewの外部のすべてのイベントを受信するタップレコグナイザーを作成します。

- (void)viewDidLoad
{
   [super viewDidLoad];
   ...

    NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];

    [nc addObserver:self selector:@selector(keyboardWillShow:) name:
     UIKeyboardWillShowNotification object:nil];

    [nc addObserver:self selector:@selector(keyboardWillHide:) name:
     UIKeyboardWillHideNotification object:nil];

    tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard:)];

    ... 
}

次に、キーボードの通知方法で、ジェスチャレコグナイザーをビューに追加および削除します。

//add gesture recognizer when keyboard appears
-(void)keyboardWillShow:(NSNotification *) note {
    [self.view addGestureRecognizer:tapRecognizer];
}

//remove it when keyboard disappears
-(void)keyboardWillHide:(NSNotification *) note
{
    [self.view removeGestureRecognizer:tapRecognizer];
}

ジェスチャレコグナイザーのアクションメソッドでは、すべてのファーストレスポンダーを辞任してキーボードを閉じます。

-(IBAction)dismissKeyboard:(id)sender
{
    //this removes ALL firstResponder from view
    [self.view endEditing:TRUE];
}

ある時点でキーボード通知の聞き取りを終了することを忘れないでください。

[[NSNotificationCenter defaultCenter] removeObserver:self];
于 2012-05-08T15:07:21.087 に答える
1

シングルタップGestureRecognizerを追加し、呼び出された関数でキーボードを辞任します

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignKeyBoard)];
[tap setNumberOfTapsRequired:1];
[self.view addGestureRecognizer:tap];
于 2012-05-08T14:47:15.263 に答える