Tôi đã tìm kiếm hàng giờ trên Google và Stackoverflow, đã thử chúng nhưng không có may mắn.Làm thế nào để gọi phương thức didSelectRowAtIndexPath với UITapGestureRecognizer?
Tôi có một UITableView tblDepartment
và một UISearchBar studentSearch
phía trên nó.
tôi thêm một UITapGestureRecognizer
để bỏ qua bàn phím từ studentSearch
textbox khi người dùng khai thác bên ngoài hộp tìm kiếm:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.tblDepartment addGestureRecognizer:gestureRecognizer];
- (void)hideKeyboard
{
[studentSearch resignFirstResponder];
}
Sau đó, phương pháp didSelectRowAtIndexPath:(NSIndexPath *)indexPath
không được gọi nữa khi tôi chọn hàng trong tblDepartment
. Tôi biết gestureRecognizer
là lý do.
Vì vậy, làm cách nào tôi có thể ẩn bàn phím và vẫn cho phép người dùng chọn hàng?
Tôi đã thử mã này, nhưng nó đã không làm việc:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:tblDepartment]) {
return NO;
}
return YES;
}
Bạn có thể xóa trình nhận dạng cử chỉ và từ bỏ người trả lời đầu tiên từ 'tableView: didSelectRowAtIndexPath:' thay thế? – dasblinkenlight
Thử xóa trình nhận dạng cử chỉ của bạn sau khi 'resignFirstResponder' – ohr
@dasblinkenlight: Cảm ơn bạn đã bình luận. 'TblDepartment' có khoảng 7 hàng và bàn phím chồng lên nhau khi hiển thị. Tôi muốn người dùng có thể chọn hàng nếu họ không muốn tìm kiếm :) Vì vậy, khi họ nhấn vào bên ngoài hộp tìm kiếm, bàn phím bị loại bỏ và họ có thể chọn các hàng dưới cùng. –