近日有用户报 app 调用中文手写输入法怎么设置时出现闪退问题描述可以参照网上:
网上提到的解决办法都是千篇一律,即不要重写 ScrollView 的 touchesXXX 方法但这个 app 中这是不可能的,因为筆者有一个自定义控件必须要让 scrollView 响应点击事件
具体机制未细究,估计是 iOS 的 bug(有时间提给苹果吧)于是解决办法就是修改 +UITouch 分类,在向 nextResponder 传遞触摸事件之前做一个判断发现是 UIKBCandidateCollectionView 类就不传递触摸事件:
注意:Category 分类哪怕是不用导入头文件也会自动失效,这和普通类不一样(普通的類不导入头文件是不会加载的)只不过如果你不导入分类的头文件的话,你无法在源代码中调用其扩展和覆盖的方法但 +UITouch 这个分类不同,它的所有 touchesXXX 方法是触摸发生时自动调用的不需要你在源代码中手动调用。