swift - 完成按钮使应用程序崩溃
问题描述
我想要一种在输入 UITextField 时关闭键盘的方法。我在google上查了一下,在Medium上找到了这个:
https://medium.com/@KaushElsewhere/how-to-dismiss-keyboard-in-a-view-controller-of-ios-3b1bfe973ad1
每次我按下完成按钮时,应用程序都会崩溃。任何帮助将不胜感激。
代码:
override func viewDidLoad() {
super.viewDidLoad()
//init toolbar
let toolbar:UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 30))
//create left side empty space so that done button set on right side
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneBtn: UIBarButtonItem = UIBarButtonItem(title: “Done”, style: .done, target: self, action: Selector(“doneButtonAction”))
toolbar.setItems([flexSpace, doneBtn], animated: false)
toolbar.sizeToFit()
//setting toolbar as inputAccessoryView
self.textField1.inputAccessoryView = toolbar
self.textField2.inputAccessoryView = toolbar
}
func doneButtonAction() {
self.view.endEditing(true)
}
解决方案
您需要添加@objc
到您的doneButtonAction
函数中,因为这就是它崩溃的原因。并使用 #selector 代替 Selector。
override func viewDidLoad() {
super.viewDidLoad()
//init toolbar
let toolbar:UIToolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width:
self.view.frame.size.width, height: 30))
//create left side empty space so that done button set on right side
let flexSpace = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let doneBtn: UIBarButtonItem = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(doneButtonAction))
toolbar.setItems([flexSpace, doneBtn], animated: false)
toolbar.sizeToFit()
//setting toolbar as inputAccessoryView
self.textField1.inputAccessoryView = toolbar
self.textField2.inputAccessoryView = toolbar
}
@objc func doneButtonAction() {
self.view.endEditing(true)
}
推荐阅读
- java - Quarkus 原生镜像构建失败
- reactjs - 在不相关的 React 组件中共享 GraphQL/Apollo 本地和检索数据(使用 Hooks)
- javascript - 是否有一种通过 URL 播放 Youtube 视频的简单(r)方法?(IFrame API)
- c# - 如何通过任意字段组合导出数据
- python - 如何将 DataFrame 的每一行发送到 Step Function,获取响应并将其存储在 DataFrame 的列中?
- maven-dependency-check-plugin - dependency-check:Sonatype OSS Index Analyzer 的重试机制
- javascript - 从 Xstate 的服务中清理和停止生成的 Actor
- angular - VS Code 在打开新文件时编译
- java - 是否可以使用 maven 为包含测试依赖项的测试类创建一个 jar?
- python-3.x - 为什么在为 RandomizedSearchCV 的参数“param_distributions”提供字典列表时出现错误?