2015-11-18 7 views
1

我有一個ViewController具有textSearchTableView:UITableView和搜索欄:UISearchBarDissmissing鍵盤,而無需調用didSelectRowAtIndexPath方法

我加UITapGestureRecognizer到dissmis鍵盤

override func viewDidLoad() { 

// ... 

self.tap = UITapGestureRecognizer(target: self, action: "DissmissKeyboard") 
     self.tap.delegate = self 
     self.view.addGestureRecognizer(self.tap) 
// ... 

} 

func DissmissKeyboard() 
    { 
     view.endEditing(true) 
    } 

我已經加入此功能,以防止破壞(didSelectRowAtIndexPath方法)功能選擇了電池後

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { 
     if touch.view.isDescendantOfView(self.textSearchTableView) { 
     return false 
     } 
     return true 
    } 

但問題是:當鍵盤被啓用,我想dissmiss它,

如果我點擊textSearchTableView,(didSelectRowAtIndexPath方法)將運行

我怎樣才能dissmiss鍵盤,如果我在tableView點擊沒有調用(didSelectRowAtIndexPath)?我不希望打破以及

我希望我所描述的問題以及 非常感謝

+0

在你的情況下,如果用戶在屏幕上的任何地方點擊,那麼關閉鍵盤是一個壞主意。用戶點擊哪裏?它必須是表中的一行,因此也是你的問題。我會在鍵盤上放置一個完成按鈕並將resiginFirstResponder附加到它上面。 –

回答

2

重新寫你的didSelectRowAtIndexPath這樣的:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    if (self.searchBar.isFirstResponder()) 
    { 
     self.searchBar.resignFirstResponder() 
    } 
    else 
    { 
     //Do something here 
    } 
} 

或者:我們通常使用tableviews這種方法。當拖動的實現代碼如下開始

self.tableView.keyboardDismissMode = .OnDrag 

這將關閉鍵盤。

+0

這個問題明確詢問如何在不調用''didSelectRowAtIndexPath'''的情況下做到這一點。這怎麼可以有任何幫助? – SmokeDispenser

+0

謝謝你的工作,但是當我關閉鍵盤單元格被選中,所以我添加了這一行if語句tableView.deselectRowAtIndexPath(indexPath,animated:true)但它也單元格被seleceted,然後取消選擇 – Maha

+0

請檢查更新的答案,並讓我知道它是否有幫助。 – Nishant

0

這個功能怎麼樣,你有你的tableview的委託回報爲零的

- (NSIndexPath *)tableView:(UITableView *)tableView 
willSelectRowAtIndexPath:(NSIndexPath *)indexPath 

由於willSelectRowAtIndexPath可能是你想要的,但不是你所要求的:解開鍵盤是通過發送第一響應者resignFirstResponder來完成的,以回答實際問題。

+0

非常感謝您的回答 – Maha

相關問題