2017-01-09 47 views
0

我在導航欄中有一個按鈕,當按下該按鈕時,它將調用一個在導航欄中將文本字段顯示爲titleView的函數(showAddItemtextField)。文本在文本字段中不可見

navigationItem.leftBarButtonItem = UIBarButtonItem(title: "+", style: .plain, target: self, action: #selector(showAddItemTextField)) 

這一點是好的,到目前爲止,我可以輸入到文本字段(我知道,因爲當我點擊的文本字段的佔位符文本消失,當我輸入我得到自動完成建議),但我輸入的文本是不可見的。

這裏是我到目前爲止的代碼:

// Show text field upon add button press 
lazy var addItemTextField: UITextField = { 
    let textField = UITextField() 
    textField.placeholder = "Add a new item..." 

    return textField 
}() 

func showAddItemTextField() { 
    self.navigationItem.titleView = addItemTextField 

} 

我不知道如果這個問題是因爲新的文本字段,作爲navigationItem.titleView,那張是什麼,通常是有頂部(navigationItem.title )。當文本字段存在時,是否必須隱藏navigationItem.title?或者是一個不同的問題?

我還應該補充說,當我點擊文本字段時屏幕鍵盤不會出現。

+1

你的'showAddItemTextField'代碼沒有意義。您不能將相同的文本字段作爲子視圖添加到'self.view'中,並作爲標題視圖添加到'navigationItem'中。 – matt

+0

@matt我將刪除addSubview,我意識到現在它是不必要的,但我不認爲這是什麼導致我的問題。你知道解決方案讓文本出現在我的文本字段嗎? – d0xi45

回答

1

問題是您的文本字段沒有大小。你沒有給它的大小,當你創造了它,當你說:

let textField = UITextField() 

然後,通過不必要的textField.translatesAutoresizingMaskIntoConstraints線加劇了這一問題。

也能正常工作對我來說:

let tf = UITextField(frame:CGRect(origin:.zero, size:CGSize(width:100, height:28))) 
    tf.borderStyle = .bezel 
    self.navigationItem.titleView = tf 

我不是說這是大小/看你想要的,但它是一個可視文本字段,您可以鍵入。

+0

謝謝,這工作。 textField.translatesAutoresizingMaskIntoConstraints是用於編程約束,如果我走了那條路線,但我刪除它,並給文本字段的大小,現在一切看起來不錯,除了鍵盤沒有顯示,但我敢打賭,這是一個簡單的修復,我可以找到。再次感謝。 – d0xi45

+0

在我的機器上,當我點擊文本字段時,鍵盤顯示出來,這是正確的。如果您希望文本字段以編程方式召喚鍵盤,請將其作爲第一響應者。 – matt

+0

我嘗試了textField.becomeFirstReponder()裏面的addItemtextField(我假設這是正確的地方?對不起,我很新),鍵盤不顯示。 – d0xi45