作者:冰凌清泽_712 | 来源:互联网 | 2023-01-12 11:28
我正在使用swift 2.2 for iOS app.
我有一个UIButton,其中有一个.TouchUpInside
触发UITextField
成为的事件first responder
.
以下是输入:
self.manualInput = BrandTextField(y: 0, parentWidth: self.view.frame.width)
self.manualInput.returnKeyType = .Search
self.manualInput.autocorrectiOnType= .No
self.manualInput.hidden = true
self.manualInput.text = ""
self.manualInput.delegate = self
self.manualInput.autocapitalizatiOnType= .AllCharacters
self.manualInput.moveX(0)
self.manualInput.changeWidth(self.view.frame.width)
self.manualInput.layer.cornerRadius = 0
self.backgroundView.addSubview(self.manualInput)
下面是按钮:
self.keyboardButton = ActionButton(x: Dimensions.xScaleValue(170), y: Dimensions.yScaleValue(495), onTitle: "Enter code", offTitle: "Enter code", onImage: "manual_entry", offImage: "manual_entry", imageOn: true, action: {
self.manualInput.becomeFirstResponder()
print("Open the input")
})
self.backgroundView.addSubview(self.keyboardButton)
我也有这两个观察者:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyBoardWillShow), name: UIKeyboardDidShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.keyBoardWillHide), name: UIKeyboardWillHideNotification, object: nil)
func keyBoardWillShow(notification: NSNotification) {
print("Keyboard will show")
let frame = (notification.userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
self.manualInput.moveY(frame.origin.y - self.manualInput.frame.height)
self.manualInput.hidden = false
}
func keyBoardWillHide(notification: NSNotification) {
print("Keyboard will hide")
self.manualInput.moveY(0)
self.manualInput.hidden = true
}
问题是,当我按下iOS 11时的按钮时,会触发becomeFirstResponder()行,但不会显示键盘.
对我来说,奇怪的是,如果我初始化视图中的输入并使其不隐藏按钮仍然不起作用.除非我点击输入,否则关闭键盘,然后使用按钮触发.
我不知道我是否在iOS 11的设置中遗漏了一些内容,或者我是否可以不再这样做了?