写了一个自定义键盘,使用代理实现的回调,遇到了一个奇葩问题
键盘都是枚举来定义的,每次回调都会返回一个枚举值,其他按钮点击后,代理函数都会响应,唯独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,使用不规范,影响了代理函数的执行
网友评论