iOS监听UITextView、UITextField键盘删除键
2016-06-08 15:46
543 查看
今天做了一个设置锁屏密码功能,其中我使用的是四个UITextField,上一个UITextField输入之后,下一个UITextField响应,这时的UITextField里面没有任何值,我想过使用UITextFieldTextDidChangeNotification通知,但是只有输入值时才能监听,此法行不通啊。
还找了一下如何获取深处这个按钮,UIButton *clearButton = [myTextField valueForKey:@"_clearButton"];
[clearButton setImage:[UIImagenew] forState:UIControlStateNormal];重写其中的点击方法也失败了。
参考其讲解点击打开链接
我现在想做的是到下一个UITextField时,我点击键盘自带的删除按钮时,上一个UITextField响应删除方法,经研究发现一个办法,代码如下:
先说原理UITextField其实里面用的是UIKeyInput,先看UIKeyInput.h
@protocol UIKeyInput <UITextInputTraits>
- (BOOL)hasText;
- (void)insertText:(NSString *)text;
- (void)deleteBackward; <-------就是它删除方法
@end
使用首先继承 UITextField:
.h文件
#import <UIKit/UIKit.h>
@class YNTextField;
@protocol YNTextFieldDelegate <NSObject>
- (void)ynTextFieldDeleteBackward:(YNTextField *)textField;
@end
@interface YNTextField : UITextField
@property (nonatomic, assign) id <YNTextFieldDelegate>
yn_delegate;
@end
再看.m文件
#import "YNTextField.h"
@implementation YNTextField
- (void)deleteBackward {
!!!这里要调用super方法,要不然删不了东西
[super deleteBackward];
if ([self.yn_delegaterespondsToSelector:@selector(ynTextFieldDeleteBackward:)])
{
[self.yn_delegate ynTextFieldDeleteBackward:self];
}
}
最后调用时设置代理
博主提供几篇具有帮助的文章
iOS - 监听UITextField键盘删除键之分类
http://stackoverflow.com/questions/27921485/deletebackward-not-getting-called-for-custom-uitextfield
http://stackoverflow.com/questions/1977934/detect-backspace-in-uitextfield
http://stackoverflow.com/questions/25371254/how-to-detect-delete-key-on-an-uitextfield-in-ios-8
http://stackoverflow.com/questions/27921485/deletebackward-not-getting-called-for-custom-uitextfield
还找了一下如何获取深处这个按钮,UIButton *clearButton = [myTextField valueForKey:@"_clearButton"];
[clearButton setImage:[UIImagenew] forState:UIControlStateNormal];重写其中的点击方法也失败了。
参考其讲解点击打开链接
我现在想做的是到下一个UITextField时,我点击键盘自带的删除按钮时,上一个UITextField响应删除方法,经研究发现一个办法,代码如下:
先说原理UITextField其实里面用的是UIKeyInput,先看UIKeyInput.h
@protocol UIKeyInput <UITextInputTraits>
- (BOOL)hasText;
- (void)insertText:(NSString *)text;
- (void)deleteBackward; <-------就是它删除方法
@end
使用首先继承 UITextField:
.h文件
#import <UIKit/UIKit.h>
@class YNTextField;
@protocol YNTextFieldDelegate <NSObject>
- (void)ynTextFieldDeleteBackward:(YNTextField *)textField;
@end
@interface YNTextField : UITextField
@property (nonatomic, assign) id <YNTextFieldDelegate>
yn_delegate;
@end
再看.m文件
#import "YNTextField.h"
@implementation YNTextField
- (void)deleteBackward {
!!!这里要调用super方法,要不然删不了东西
[super deleteBackward];
if ([self.yn_delegaterespondsToSelector:@selector(ynTextFieldDeleteBackward:)])
{
[self.yn_delegate ynTextFieldDeleteBackward:self];
}
}
- (BOOL)keyboardInputShouldDelete:(YNTextField *)textField { BOOL shouldDelete =YES; if ([YNTextFieldinstancesRespondToSelector:_cmd]) { BOOL (*keyboardInputShouldDelete)(id,SEL,UITextField *) = (BOOL (*)(id,SEL,UITextField *))[UITextFieldinstanceMethodForSelector:_cmd]; if (keyboardInputShouldDelete) { shouldDelete = keyboardInputShouldDelete(self,_cmd, textField); } } if ([[[UIDevicecurrentDevice]systemVersion]intValue] >=8) { [selfdeleteBackward]; } return shouldDelete; } @end
最后调用时设置代理
- (void)hqTextFieldDeleteBackward:(HQTextField *)textField { }
博主提供几篇具有帮助的文章
iOS - 监听UITextField键盘删除键之分类
http://stackoverflow.com/questions/27921485/deletebackward-not-getting-called-for-custom-uitextfield
http://stackoverflow.com/questions/1977934/detect-backspace-in-uitextfield
http://stackoverflow.com/questions/25371254/how-to-detect-delete-key-on-an-uitextfield-in-ios-8
http://stackoverflow.com/questions/27921485/deletebackward-not-getting-called-for-custom-uitextfield
相关文章推荐
- iOS 全局修改UINavigation 后退按钮
- 关于UIView 的autoresizingMask属性,即UIViewAutoresizing
- MySQL 自学笔记之:数据库查询 DQL(Data Query Lanuage)汇总函数
- MySQL 自学笔记之:数据库查询 DQL(Data Query Lanuage)数据分类(where 子语句)
- EasyUI 第一个demo
- Errors running builder 'Integrated External Tool Builder' on project '项目名'
- 微信支付 总提示get_brand_wcpay_request:fail 也不跳转支付页面 的解决方案
- GY-30数字光强传感器通过I²C接入Arduino
- UIAlertController
- Parquet
- IOS-UIView转UIImage并保存到本地相册
- Executing spatial queries
- UIAlertViewController弹出控件代码集成5步
- CUICatalog: Invalid asset name supplied:
- jenkins打包Built-By的值修改为Administrator
- iOS之UI--富文本总结
- 如何将UUID保存在钥匙串(keyChain中)
- Qt5.7中 QtQuick使用风格组件 安卓图片马赛克问题解决
- QtQuick control2.0 样式定制
- confluence与jira账号对接、查看到期时间及问题总结