iOS8 UIKeyInput protocol

先上链接

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的代理,在子类中重写即可


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值