1

私はその非常に基本的な質問を知っていますが、私はで奇妙な振る舞いに直面していUIPickerViewます。これが私のスキャンリオです-私はUIPickerView自分のアプリで使用しています。私の問題は、行をクリックするとdidSelectRowメソッドが呼び出されないことですが、ピッカーの行をスクロールすると機能します。 より具体的には、ピッカーの最初の行が現在選択されており、4番目の行をクリックしてもdidSelectRowメソッドが起動されないと仮定します。私は何が欠けていますか?

更新:メソッドからこのコードにコメントviewDidLoadすると、すべて正常に機能します-

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

    [self.view addGestureRecognizer:tap];

-(void)dismissKeyboard {
    [numberTextField resignFirstResponder];
    [nameTextField resignFirstResponder];
    [cityTextField resignFirstResponder];
    [addressTextField resignFirstResponder];
    [zipTextField resignFirstResponder];
}
4

2 に答える 2

1

ビューのどこかをクリックした場合に、タップジェスチャレコグナイザーを使用してキーボードを閉じようとしていると想定しています。これが引き起こしている問題は、UIPickerがタッチイベントを渡さないことです。考えられる解決策について2つのアイデアがあります。

1)メソッドの内部:

  • (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view

場所やビューをテストして、ピッカーが触れられたかどうかを判断してから、イベントを転送します。

2)タップ認識機能をビュー全体に追加する代わりに、非表示のサブビューをタップ領域に追加して、ピッカーと重ならないキーボードを閉じます。

于 2012-11-08T14:49:36.707 に答える
0

ピッカービュー以外のself.viewの他の部分にジェスチャレコグナイザーを追加してみましたか?

于 2012-11-08T13:49:37.440 に答える