我DAKeyboardControll
在我的应用程序上使用。它有一个名为 : 的方法,swizzled_addSubview
并像这样实现:
- (void)swizzled_addSubview:(UIView *)subview
{
if (!subview.inputAccessoryView)
{
if ([subview isKindOfClass:[UITextField class]])
{
UITextField *textField = (UITextField *)subview;
if ([textField respondsToSelector:@selector(setInputAccessoryView:)])
{
UIView *nullView = [[UIView alloc] initWithFrame:CGRectZero];
nullView.backgroundColor = [UIColor clearColor];
textField.inputAccessoryView = nullView;
}
}
else if ([subview isKindOfClass:[UITextView class]]) {
UITextView *textView = (UITextView *)subview;
if ([textView respondsToSelector:@selector(setInputAccessoryView:)] && [textView respondsToSelector:@selector(isEditable)] && textView.isEditable)
{
UIView *nullView = [[UIView alloc] initWithFrame:CGRectZero];
nullView.backgroundColor = [UIColor clearColor];
textView.inputAccessoryView = nullView;
}
}
}
[self swizzled_addSubview:subview];
}
问题
最近在我与 AutoLayout 兼容的新版本中,我收到了这种方法的一些崩溃,以及它们的原因:
-[UIView(DAKeyboardControl) swizzled_addSubview:]
,
EXC_BAD_ACCESS KERN_PROTECTION_FAILURE at 0x0090dffc
我知道这个问题已经发生了很多电话,但为什么它不能正常工作?
此崩溃仅发生在 8 个用户身上,共 54 次,其中 50% 的用户拥有越狱设备,而另一个人拥有非越狱设备!