2017-08-07 45 views
1

我有一個自定義UICollectionViewCell(姑且稱之爲MyCustomCell)具有自定義UITextField(姑且稱之爲MyCustomField)裏面,用戶可以添加文字。但是,似乎不管我做什麼,抽頭輸入都不會從MyCustomCell到其子視圖MyCustomField。以前,我有這樣的安排,除了MyCustomCellUITableViewCell,因爲某些原因工作。斯威夫特 - 不能從自定義UICollectionViewCell傳遞用戶手勢的UITextField裏面

現在,我已經做了解決方法,其中每當電池被竊聽,該小區發送becomeFirstResponder()消息到文本框。 然而,這並沒有讓上MyCustomField裏面的「明文」按鈕,用戶水龍頭,也沒有讓用戶在文本字段中移動光標:

// function inside the MyCustomCell, called by the view controller 
// whenever it thinks the user tapped on a cell: 
func cellTapped() 
{ 
    // this is an instance of MyCustomField: 
    input.becomeFirstResponder(); 
} 

有什麼辦法將實際手勢「傳遞」給MyCustomField(來自MyCustomCell或來自管理它們的視圖控制器)?

更新:這是視圖層次結構是什麼樣子的MyCustomCell(子類UICollectionViewCell的):

view hierarchy of MyCustomCell, with the MyCustomField in it

+0

您是通過故事板設置單元格/文本框還是完全通過代碼完成? – MultiColourPixel

+0

您是否嘗試過爲'UICollectionViewCell'和'UITextField'設置'isUserInteractionEnabled'屬性爲'true'? –

+0

@MultiColourPixel - 故事板只是佔位符,其中包含一些自動約束的內容,用於說明文本字段如何適合單元格,以及單元格的大小等。其他一切(設置自定義)位於相應Swift文件的代碼中。 –

回答

1

這可能是幫助其他人誰也有類似的問題:我相信@MultiColourPixel在上面的註釋中是正確的,在MyCustomField和MyCustomCell之間有一個隱藏的「視圖」。我所做的是:

  1. 備份的代碼中的.xib和.swift文件MyCustomCellMyCustomField
  2. 刪除.xib和.swift文件。
  3. 在XCode菜單中,重新創建.swift文件 - 並確保當您創建作爲UICollectionViewCell的子類的.swift文件/類時,檢查「創建XIB」以及
  4. 將舊的xib/swift內容複製到新的xib/swift中。
  5. 它應該工作,而不需要明確發送becomeFirstResponder()MyCustomField