我有一個視圖頂部有兩個文本框,下半部分有一個桌面視圖。如果我向視圖添加觸摸手勢識別器,表格行選擇不再有效。其中一個文本字段使用默認鍵盤,但另一個使用十進制鍵盤。我可以在第一個textview的位置使用return或「Done」,但是十進制小鍵盤沒有這個選項。解僱沒有觸摸手勢識別器的鍵盤
我已經通過在視圖中添加「關閉鍵盤」按鈕來解決問題,但對我來說感覺很難受。有另一種方法嗎?
我有一個視圖頂部有兩個文本框,下半部分有一個桌面視圖。如果我向視圖添加觸摸手勢識別器,表格行選擇不再有效。其中一個文本字段使用默認鍵盤,但另一個使用十進制鍵盤。我可以在第一個textview的位置使用return或「Done」,但是十進制小鍵盤沒有這個選項。解僱沒有觸摸手勢識別器的鍵盤
我已經通過在視圖中添加「關閉鍵盤」按鈕來解決問題,但對我來說感覺很難受。有另一種方法嗎?
解決此問題的一種方法是,將根視圖(這是兩個文本字段和tableview的超級視圖)轉換爲UIControl
。 然後將一個touchDown
或touchUpInside
事件處理程序添加到控件,該控件將關閉鍵盤。我更喜歡使用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
偉大的解決方案,並且易於實現! –
您可以添加一個「取消」或「完成」通過使用這個鏈接按鈕,這樣的鍵盤:https://github.com/chrisamanse/iOS-KeyboardAccessoryToolbar/tree/master/KeyboardAccessoryToolbar
您可以隨時通過解除選項將工具欄添加到鍵盤上;它並不醜陋;或者你可以改變你的基礎'UIView'到'UIController',並且可以處理觸發事件並退出第一個響應者。 – holex
這聽起來像一個UXUI的問題,值得截圖。這不是一個堆棧溢出問題。 – nhgrif
這對堆棧來說很不錯。讓我們幫助保羅,而不是告訴他去哪裏。 – Mihado