Swift5学习之旅之UIToolbar(工具栏)、UIPickerView(选择器视图)键盘响应事件

27 篇文章 0 订阅

Swift5学习之旅------UIToolbar(工具栏)、UIPickerView(选择器视图)键盘响应事件

在这里插入图片描述
在这里插入图片描述

如果能提供到帮助请点个赞再关闭吧👍
GitHub还没上传,用着Dropbox先吧(可能要翻墙
https://www.dropbox.com/sh/h7po1afkvpdf5p8/AAAjTKtKSPedsnxLerJnn_iRa?dl=0
Dropbox ToolBar UIPickerView

  • UIPickerView
import UIKit

class MyPickerView: UIPickerView,UIPickerViewDataSource,UIPickerViewDelegate {

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.delegate = self
        self.dataSource = self

    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //设置选择框的总列数,继承于UIPickViewDataSource协议
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 2
    }
    //设置选择框的总行数,继承于UIPickViewDataSource协议
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        //总行数设置为数据源的总长度。Component:0表示第一列
        if component == 0 {
            return Data.pickerProvincesData.count
        }
        else{
            return Data.pickerCitiesData.count
        }
    }
    
    //设置选项框各选项的内容,继承于UIPickViewDelegate协议
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        //选择第一级数据
        if component == 0 {
            return Data.pickerProvincesData[row]
        }else{ //第二级数据
            return Data.pickerCitiesData[row]
        }
    }
    
    //选择空间的事件选择
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if(component == 0){
            //记录用户选择的值
            let selectedProvince = Data.pickerProvincesData[row] as String
            //根据第一选择的值,记录第二列的数据
            Data.pickerCitiesData = Data.pickerData[selectedProvince]!
            //刷新第二列的数据源
            self.reloadComponent(1)
            //刷新数据源后将第二组数据转到下标为0,并且启动效果
            self.selectRow(0, inComponent: 1, animated: true)
//            print(selectedProvince)
        }
    }
    
    //设置每行的高度
    func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
        return 45.0
    }
    
}

  • UIToolBar
import UIKit
class MyToolBar: UIToolbar,UITextFieldDelegate {

    override init(frame: CGRect) {
        super.init(frame: frame)
        inputToolbarView.frame = CGRect(x: 5, y: 5, width: self.bounds.width - 200, height: self.bounds.height - 10)
        inputTextField.frame = CGRect(x: 5, y: 5, width: self.bounds.width - 200, height: self.bounds.height - 10)
        inputTextField.borderStyle = .roundedRect
        inputTextField.delegate = self
        inputToolbarView.addSubview(inputTextField)
        let barItem3 = UIBarButtonItem(customView: inputToolbarView)
        
        self.setItems([barItem3,btngap,barItem1,barItem2], animated: true)
        self.backgroundColor = UIColor.clear
        barItem2.tintColor = UIColor.red
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    var barItem1 = UIBarButtonItem(image: UIImage(systemName: "square.and.arrow.up"), style: .done, target: self, action: #selector(upload(_:)))
    @objc func upload(_ sender: UIBarButtonItem) {
        print("上传")
    }
    
    
    var inputToolbarView = UIView()
    let inputTextField = UITextField()
    var text: String! = ""
    
    var barItem2 = UIBarButtonItem(title: "输入", style: .plain, target: self, action: #selector(second(_:)))
    let btngap = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
    
    @objc func second(_ sender: UIBarButtonItem) {
        print(text ?? "")
    }
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        text = (textField.text! as NSString).replacingCharacters(in: range, with: string)
            return true
        }
  • 键盘响应事件
//键盘弹起
        @objc func keyboardWillAppear(notification: NSNotification) {
            // 获得软键盘的高
//            let keyboardinfo = notification.userInfo![UIResponder.keyboardFrameBeginUserInfoKey]
            keyboard = 350
            toolBar.frame.origin.y = self.view.bounds.height - 60 - keyboard
            print(keyboard)

        }

        //键盘落下
        @objc func keyboardWillDisappear(notification:NSNotification){
            //软键盘收起的时候恢复原始偏移
            UIView.animate(withDuration: 0.5) {
                self.keyboard = 0
                self.toolBar.frame.origin.y = self.view.bounds.height - 60
                print(self.keyboard)
            }
        }

    
    
    //点击屏幕键盘退出
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
            view.endEditing(true)
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值