我正在简单地联系我们表格,其中包含姓名,电子邮件地址和消息。我的viewDidLoad中的以下代码是Name文本字段的片段。当我打开联系表格时,我希望键盘在这个字段上打开。
override func viewDidLoad() {
view.backgroundColor = UIColor.darkGray
let fullNameInput = UITextField()
fullNameInput.frame = CGRect(x: 15, y: 15, width: self.view.frame.width - 2 * margin, height: 50)
fullNameInput.placeholder = "Your Name"
let fullNameString = "Your Name"
let fullNamePlaceholder = NSMutableAttributedString(string: fullNameString)
let fullNameRange = (fullNameString as NSString).range(of: fullNameString)
fullNamePlaceholder.addAttribute(NSForegroundColorAttributeName, value: UIColor.white, range: fullNameRange)
fullNameInput.attributedPlaceholder = fullNamePlaceholder
fullNameInput.backgroundColor = .black
fullNameInput.delegate = self
fullNameInput.layer.cornerRadius = 5.0
fullNameInput.layer.borderWidth = 2.0
fullNameInput.layer.borderColor = UIColor.black.cgColor
fullNameInput.becomeFirstResponder()
self.view.addSubview(fullNameInput)
}
在浏览解决方案时我相信
fullNameInput.becomeFirstResponder()
是我希望实现此目的的代码行。但是,它没有这样做。我在这里错过了什么吗?
其他问题
在此之后,我还会为打开键盘上方的区域制作一个滚动视图。
我怎样才能获得键盘的框架?
我正在使用Swift 3.0和iOS 9.2
答案 0 :(得分:2)
来自becomeFirstResponder()
上的documentation:
永远不要在不属于活动视图的视图上调用此方法 层次结构。
所以从viewDidLoad
调用它肯定不是一个好主意。试试viewDidAppear
答案 1 :(得分:2)
您必须从 viewDidAppear
调用此方法override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
fullNameInput.becomeFirstResponder()
}
答案 2 :(得分:0)
在fullNameInput
被包含在视图中之前,您正在成为第一响应者。
首先将其添加为子视图,然后将其称为第一响应者,它将起作用。
我会这样做,因为mag_zbc说。使用ViewDidAppear