目录
在viewDidLoad中配置textField的returnkey。
1.点击键盘外的区域时键盘隐藏
只需要在工程中添加这个function即可
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
view.endEditing(true)
}
2.点击输入框时抬高整体页面,防止输入框被键盘遮挡
两个function的添加
首先添加keyboardWillShow和keyboardWillHide两个function。
@objc private func keyboardWillShow(sender: NSNotification) {
if textField.isFirstResponder {
guard let userInfo = sender.userInfo else { return }
let duration: Float = (userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! NSNumber).floatValue
UIView.animate(withDuration: TimeInterval(duration), animations: { () -> Void in
let transform = CGAffineTransform(translationX: 0, y: -180)
self.view.transform = transform
})
}
}
// キーボードが閉じられた時
@objc private func keyboardWillHide(sender: NSNotification) {
guard let userInfo = sender.userInfo else { return }
let duration: Float = (userInfo[UIResponder.keyboardAnimationDurationUserInfoKey] as! NSNumber).floatValue
UIView.animate(withDuration: TimeInterval(duration), animations: { () -> Void in
self.view.transform = CGAffineTransform.identity
})
}
其中textField为UItextField的名称,替换自己的即可。
如果有多个textField需要加入抬高效果,复制if文在其下方并修改textField名称即可。
如果想调整抬高的高度,修改以下部分。修改y的参数,数越小抬得越高。
let transform = CGAffineTransform(translationX: 0, y: -180)
viewDidLoad中添加代码
在viewDidLoad中添加以下代码即可实现该功能。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillShow(sender:)),
name: UIResponder.keyboardWillShowNotification,
object: nil)
NotificationCenter.default.addObserver(
self,
selector: #selector(keyboardWillHide(sender:)),
name: UIResponder.keyboardWillHideNotification,
object: nil)
}
3.Return键的配置
先为class添加UITextFieldDelegate
class record: UIViewController, UITextFieldDelegate
在viewDidLoad中配置textField的returnkey。
@IBOutlet weak var nameOfCost: UITextField!
@IBOutlet weak var numberOfCost: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
//设置returnkey
nameOfCost.delegate = self
nameOfCost.returnKeyType = .next//此处为设置按键类型
nameOfCost.tag = 0//设置它的番号
numberOfCost.delegate = self
numberOfCost.returnKeyType = .done
numberOfCost.tag = 1
}
添加function来设置returnkey的功能
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
switch textField.tag {
case 0:
// 在tag是0的textField里,按returnkey执行跳转numberOfCost这个textField
numberOfCost.becomeFirstResponder()
break
case 1:
// tag是1的textField里什么都不执行
break
default:
break
}
return true
}