我的导航栏中有一个按钮,当按下该按钮时,会调用一个函数(showAddItemtextField),该函数在导航栏中将文本字段显示为titleView。
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?或者是一个不同的问题?
我还应该补充一点,当我点击文字字段时,屏幕键盘不会出现。
答案 0 :(得分: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
我并不是说这是您想要的尺寸/外观,但它会显示您可以输入的可见文字字段。