0

行をUITableViewクリックすると、別の行UIViewControllerが特定の行の詳細とともにプッシュされます。私の問題は、画面に触れてキーボードを閉じたいことです (これもUITableView)、行をクリックするとUITableView、キーボードは閉じますが、didSelectRowメソッドは機能しません。ViewControllerセルをクリックすると、新しいものはプッシュされません。

また、逆に、変更すると、TableViewセルをクリックしてキーボードを閉じることができ、他のViewControllerがプッシュされますが、他の場所に触れてもキーボードは閉じられません。

私は何をすべきか?

- (IBAction)hideKeyboard:(id)sender
{
    [tfFoodsSearchQuery resignFirstResponder];
}

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

    if ([touch.view isKindOfClass:[UITableView class]])
    {
        // we touched a button, slider, or other UIControl
        return YES; // handle the touch
    }
    NSLog(@"Touch");
    return NO; // ignore the touch
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

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

    [self.view addGestureRecognizer:tap];

    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard:)];
    gestureRecognizer.delegate = self;
    [self.tvFoods addGestureRecognizer:gestureRecognizer];
}

ありがとう!

4

2 に答える 2

2

設定

[gestureRecognizer setCancelsTouchesInView:NO];

tvFoods に追加する代わりに、self.view 全体に追加して、オーバーライドされた定義に影響を与えないようにします。

また、shouldReceiveTouch デリゲートを削除します。必要ありません。

于 2012-10-28T14:30:11.467 に答える
1

whiteagle のヒントを使用して、次のコードを使用して、UITableView でキーボードを閉じるシングル タップをトラップします。タップを通過しても、行を選択できます。私の場合、タップが通過すると、インラインの日付ピッカーが表示されます。

  -(void)viewDidLoad {
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
    [singleTap setNumberOfTapsRequired:1];
    [singleTap setNumberOfTouchesRequired:1];
    [singleTap setCancelsTouchesInView:NO];
    [self.view addGestureRecognizer:singleTap];
    singleTap = nil;
  }

  // 
   -(IBAction)hideKeyboard {
    [activeTextField resignFirstResponder];
  }
于 2013-12-21T02:47:39.390 に答える