3

ボタンがあります。iOS 5 および 6 では通常どおり動作します。ただし、iOS 7 では、ボタンを押すとキーボードが消えますが、メソッドは呼び出されません。2回目に押すと、意図したとおりに機能します。

何故ですか?

コードは次のとおりです。

[self.loginButton addTarget:self action:@selector(loginButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

UITableView セルにボタンがあります。

編集:

このメソッドの最初にキーボードを閉じる方法を次に示しますが、このメソッドは iOS7 では、ボタンを 2 回タップするまで呼び出されません。

for (UITextField *field in @[self.loginField, self.passwordField]) {
    if ([field isFirstResponder]) {
        [field resignFirstResponder];
    }
}

外部のタップでキーボードを削除するジェスチャー認識機能もあります。

UITapGestureRecognizer *tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(removeKeyboard)];
[self.view addGestureRecognizer:tapper];
tapper.cancelsTouchesInView = NO;

その方法は次のとおりです。

- (void) removeKeyboard
{
    [self traverseAllSubviewsOfView:self.view withBlock:^(UIView *inView) {
        [inView resignFirstResponder];
    }];
}
4

2 に答える 2

0

cancelsTouchesInViewジェスチャ レコグナイザのプロパティを確認しましたか? このプロパティは、タッチが基になるビューに配信されるかどうかを制御します。したがって、これを に設定NOすると、タッチをボタンに送信できるようになります。詳細はこちら。

このプロパティは、コードまたは Interface Builder で設定できます。ジェスチャーレコグナイザーを強調表示し、属性インスペクターで「ビューでタッチをキャンセル」(と思います)のチェックを外すことで、IBで設定できます。

私は現在 Mac の前にいないので、正確な文言を確認することはできません。

于 2013-10-18T09:43:13.683 に答える