2016-03-18 89 views
0

我有一個視圖頂部有兩個文本框,下半部分有一個桌面視圖。如果我向視圖添加觸摸手勢識別器,表格行選擇不再有效。其中一個文本字段使用默認鍵盤,但另一個使用十進制鍵盤。我可以在第一個textview的位置使用return或「Done」,但是十進制小鍵盤沒有這個選項。解僱沒有觸摸手勢識別器的鍵盤

我已經通過在視圖中添加「關閉鍵盤」按鈕來解決問題,但對我來說感覺很難受。有另一種方法嗎?

+0

您可以隨時通過解除選項將工具欄添加到鍵盤上;它並不醜陋;或者你可以改變你的基礎'UIView'到'UIController',並且可以處理觸發事件並退出第一個響應者。 – holex

+0

這聽起來像一個UXUI的問題,值得截圖。這不是一個堆棧溢出問題。 – nhgrif

+1

這對堆棧來說很不錯。讓我們幫助保羅,而不是告訴他去哪裏。 – Mihado

回答

1

解決此問題的一種方法是,將根視圖(這是兩個文本字段和tableview的超級視圖)轉換爲UIControl。 然後將一個touchDowntouchUpInside事件處理程序添加到控件,該控件將關閉鍵盤。我更喜歡使用UIControl而不是UIGestureRecognizer來解決這樣的問題,因爲它處理事件的優雅和服從層次結構,例如,如果UITableView是它的子視圖,UIControl不會干擾UITableView上的滾動和觸摸事件。

附錄:

您還可以添加自定義視圖,可又包含鍵盤解僱按鈕,文本框的inputAccessoryView。該視圖不會成爲視圖層次結構的一部分,但正如名稱所示,它將成爲鍵盤的輔助視圖。例如,它可以有一個「X」按鈕來關閉鍵盤。

使用輸入附件視圖的方法是:

// this needs to be an instance variable 
    self.kbAccessoryView = UIView() //add button, add action etc. 
    self.firstTextfield.inputAccessoryView = kbAccessoryView 
    self.secondTextfield.inputAccessoryView = kbAccessoryView 
+0

偉大的解決方案,並且易於實現! –

1

你可以簡單地關閉鍵盤用一行代碼

self.view.endEditing(true) 

檢查了這一點也是TPKeyboardAvoiding