2012-07-30 15 views
6

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; 
} 
+0

Hareket algılayıcısını kaldırabilir ve bunun yerine ilk tabloyu 'tableView: didSelectRowAtIndexPath: 'konumundan silebilir misiniz? – dasblinkenlight

+1

"ResignFirstResponder" – ohr

+0

@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. –

cevap

14

var ayarlayın, bu GR onun jest tanırsa yatan görüşlerini ulaşmasını dokunuşları önleyen .

+1

Harika çözüm. Teşekkür ederim. '[jestRecognizer setCancelsTouchesInView: NO];' ve işe yarıyor! –

+0

Teşekkür ederim gerçekten zamanımı kurtardın :) Bu gibi yazdım tap.cancelsTouchesInView = NO; –

İlgili konular