Google'da ve Stackoverflow'ta saatlerce aradık, denedik ama şansınız yok.UITapGestureRecognizer ile didSelectRowAtIndexPath yöntemi nasıl aranır?
Bir UITableView tblDepartment
ve bunun üzerinde bir UISearchBar studentSearch
var.
Kullanıcıların arama kutusunun dışında dokunduklarında studentSearch
metin gelen Klavyeyi kapatmak için UITapGestureRecognizer
ekleyin: Ben tblDepartment
yılında satır seçtiğinizde
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.tblDepartment addGestureRecognizer:gestureRecognizer];
- (void)hideKeyboard
{
[studentSearch resignFirstResponder];
}
Bundan sonra yöntem didSelectRowAtIndexPath:(NSIndexPath *)indexPath
artık çağrılmaz. gestureRecognizer
'un sebebi olduğunu biliyorum.
Peki, klavyeyi nasıl gizleyebilirim ve hala kullanıcının satırı seçmesine izin verebilirim?
Bu kodu denedim ama işe yaramadı: , varsayılan olarak EVET NO jest tanıyıcı cancelsTouchesInView mülkiyet- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isDescendantOfView:tblDepartment]) {
return NO;
}
return YES;
}
Hareket algılayıcısını kaldırabilir ve bunun yerine ilk tabloyu 'tableView: didSelectRowAtIndexPath: 'konumundan silebilir misiniz? – dasblinkenlight
"ResignFirstResponder" – ohr
@dasblinkenlight'dan sonra jest tanıyıcıyı kaldırmayı deneyin: Yorumunuz için teşekkür ederiz. 'TblDepartment', yaklaşık 7 satıra sahiptir ve klavye, görüntülendiğinde üst üste gelir. Kullanıcıların arama yapmak istemedikleri takdirde satırları seçebilmelerini istiyorum :) Böylece arama kutusunun dışına dokunduklarında klavye kapanır ve alt satırları seçebilirler. –