先上链接
http://stackoverflow.com/questions/25371254/how-to-detect-delete-key-on-an-uitextfield-in-ios-8
项目中用到输入电话号码再进行格式化显示,在删除的时候,点击退格键 代理deleteBackWard不执行,
网上找了好多,说是ios8的bug,确实在ios7上是没问题的,后来找到了大神的文章,就豁然开朗了,
注意:这篇文章里用到的是一个私有 api,但是据解答者说 是可以上线的,我决定先当小白鼠吧
- (BOOL)keyboardInputShouldDelete:(UITextField *)textField {
BOOL shouldDelete = YES;
if ([UITextField instancesRespondToSelector:_cmd]) {
BOOL (*keyboardInputShouldDelete)(id, SEL, UITextField *) = (BOOL (*)(id, SEL, UITextField *))[UITextField instanceMethodForSelector:_cmd];
if (keyboardInputShouldDelete) {
shouldDelete = keyboardInputShouldDelete(self, _cmd, textField);
}
}
if (![textField.text length] && [[[UIDevice currentDevice] systemVersion] intValue] >= 8) {
[self deleteBackward];
return NO;// 这里 要是不想让自动删除的时候 就在这里return no,注掉上面的几行代码
} return shouldDelete; }
需要的处理代码 都再 deleteBackward
- (void)deleteBackward 是UIKeyInput的代理,在子类中重写即可