UITextField Swift中的ios – resignFirstResponder
发布时间:2020-12-14 05:20:55 所属栏目:百科 来源:网络整理
导读:在工具栏上单击完成按钮后,我希望UIPickerView被关闭(滑出视图).我将UIPickerView链接到UITextField的inputView,并将UIToolbar设置为UIPickerView的inputAccessoryView.但是,我的函数调用resignFirstResponder不会将UIPicker从视图中滑出.任何帮助,谢谢,提前
在工具栏上单击完成按钮后,我希望UIPickerView被关闭(滑出视图).我将UIPickerView链接到UITextField的inputView,并将UIToolbar设置为UIPickerView的inputAccessoryView.但是,我的函数调用resignFirstResponder不会将UIPicker从视图中滑出.任何帮助,谢谢,提前谢谢!
import UIKit class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate { // Do any additional setup after loading the view,typically from a nib. //initialization constants let pickerView = UIPickerView() let textField = UITextField() let pickerData = ["1","2","three"] override func viewDidLoad() { //pickerview tool bar let toolbar = UIToolbar(frame: CGRectMake(0,320,44)) var items = [AnyObject]() //making done button let doneButton = UIBarButtonItem(title: "Done",style: .Plain,target: self,action: Selector(donePressed())) items.append(doneButton) toolbar.barStyle = UIBarStyle.Black toolbar.setItems(items,animated: true) //creating textfields with a pickerview pickerView.delegate = self pickerView.dataSource = self pickerView.frame = CGRectMake(0,500,300) textField.inputAccessoryView = toolbar textField.inputView = pickerView textField.frame = CGRectMake(200,55,100,35) textField.backgroundColor = UIColor.blueColor() //adding objs to viewController self.view.addSubview(textField) } func donePressed() { resignFirstResponder() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } //MARK: Data Sources UIPickerView extension ViewController: UIPickerViewDataSource { func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return 1 } func pickerView(pickerView: UIPickerView!,numberOfRowsInComponent component: Int) -> Int { return pickerData.count } } //MARK: Delegates UIPickerView extension ViewController: UIPickerViewDelegate { // several optional methods: func pickerView(pickerView: UIPickerView,titleForRow row: Int,forComponent component: Int) -> String! { return pickerData[row] } func pickerView(pickerView: UIPickerView!,didSelectRow row: Int,inComponent component: Int) { textField.text = pickerData[row] } }
有两个问题:
>对于donePressed的选择器声明不正确.它应该是: let doneButton = UIBarButtonItem(title: "Done",action: "donePressed") >您需要在textField上调用resignFirstResponder(): func donePressed() { textField.resignFirstResponder() } 如果您有多个textField,并且您不想在resignFirstResponder调用中对textField进行硬编码,则可以执行以下操作: >使您的ViewController成为UITextFieldDeletate: class ViewController: UIViewController,UIPickerViewDelegate,UITextFieldDelegate { >在UITextField上设置delegate属性: textField.delegate = self >将一个属性添加到ViewController以跟踪活动的UITextField: var activeTextField:UITextField? >实现textFieldDidBeginEditing并存储活动的UITextField: func textFieldDidBeginEditing(textField: UITextField) { // became first responder activeTextField = textField } >在donePressed中,调用activeTextField上的resignFirstResponder: func donePressed() { activeTextField?.resignFirstResponder() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Flex学习笔记作用域与布局约束
- reactjs – 如何在React Hooks中将道具改为状态?
- ruby-on-rails – 使用Nokogiri和regex在Ruby XML文档中解析
- C初学者:’int’之前的预期unqualified-id
- Ajax请求中的async:false/true的作用(ajax返回值在外部调用
- objective-c – 使用NSNotificationCenter向另一个班级发送
- quick-cocos2d-x教程12:实现文本和密码输入界面
- Electron 菜鸟教程:小试 Electron开发
- ruby-on-rails – 如何使用jquery-Tokeninput和Acts-as-tag
- flex4解决label中文字过长显示省略号的办法