1

私は2つのものが互いに衝突しています。それぞれが単独で正常に動作します。しかし、私はそれらを両方とも機能させる方法がわかりません。これが、テキストフィールドとボタンがいくつかあることです。ユーザーが背景に触れたときにキーボードを閉じるを追加しましたが、このメソッドも呼び出され、ユーザーはボタンをクリックしようとします。そのため、ボタンは機能しなくなります。これが私のキーボード却下のコードです。おそらく誰もがこれを正しく実装する方法を知っているでしょう。

-(void)dismissKeyboard {
    NSLog(@"resign");
    [[_textFields objectAtIndex:0] resignFirstResponder];
    [[_textFields objectAtIndex:1] resignFirstResponder];
    [[_textFields objectAtIndex:2] resignFirstResponder];
    [[_textFields objectAtIndex:3] resignFirstResponder];
}


UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                               initWithTarget:self
                               action:@selector(dismissKeyboard)];
[TableControll.view addGestureRecognizer:tap];

[TableControll.view addSubview:save];
[button addTarget:self action:@selector(goAdvanced)
 forControlEvents:UIControlEventTouchUpInside];
[save addTarget:self action:@selector(saveInfo)
     forControlEvents:UIControlEventTouchUpInside];
4

5 に答える 5

2

コードのこの部分を変更してみてください

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

それがあなたを助けることを願っています!

于 2012-11-05T10:53:34.073 に答える
1

これは、タップイベントとボタンイベントを区別するために、この .

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
       shouldReceiveTouch:(UITouch *)touch {

    if ([touch.view isKindOfClass:[UIButton class]]) {
        return NO;
    }
    return YES;
}
于 2012-11-05T10:54:25.213 に答える
0

代わりに、addGestureRecognizerタッチ開始機能を使用できます。例:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"resign");
    [textfield1 resignFirstResponder];
    [textFiled2 resignFirstResponder];

}

これがお役に立てば幸いです。ありがとう

于 2012-11-05T11:08:33.630 に答える
0

こんにちは、そのボタンの後ろにボタンを1つ追加するだけです。そのボタンの幅は320になり、高さはiPhoneのサイズに応じて480になります。これで、背景に1つのボタンがあり、そのボタンに他のボタンがあります。これらのボタンに異なる方法を与えることができます。それが機能しているかどうか教えてください。

ハッピーコーディング!!!!!!!!

于 2012-11-05T10:54:17.013 に答える
0

以下のデリゲートメソッドで

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

のような条件を含める

 if([touch.view isKindOfClass:[UIButton class]])
    {
        return NO;
    }

およびタッチを有効にするために必要なその他のコントロール

于 2012-11-05T10:55:36.890 に答える