Swift代理函数偶尔无响应

写了一个自定义键盘,使用代理实现的回调,遇到了一个奇葩问题

键盘都是枚举来定义的,每次回调都会返回一个枚举值,其他按钮点击后,代理函数都会响应,唯独delete按键,代理函数无响应,最初代理函数实现如下:

     // MARK: - KeyboardViewDelegate
    
    func keyboardHandler(title: String, key: Key.KeyNumber) {
        
        switch key {
        case .delete:
            self.inputAmountView?.deleteInputTF()
           break
        default:
            self.inputAmountView?.inputTF(append: title)
            break
        }
        
    }

代码分析了很长时间,始终没有发现问题,浪费了好长时间,结果最后发现,在switch里面,写了哪个按键的枚举值,哪个按键就没响应,就发现了原因所在,修改后的代码如下:

     // MARK: - KeyboardViewDelegate
    
    func keyboardHandler(title: String, key: Key.KeyNumber) {
        
        switch key {
        case .delete:
            self.inputAmountView?.deleteInputTF()
           break
        case .done:
            break
        case .equal:
            break
        default:
            self.inputAmountView?.inputTF(append: title)
            break
        }
        
    }

总结:swift里面switch只写一种case,使用不规范,影响了代理函数的执行

你可能感兴趣的:(Swift代理函数偶尔无响应)