UITextField 代理设置为自己,导致键盘弹出时,界面卡死
我有一个UITextField的子类JXTextField,我希望实现注册时,用户输入邮箱时候有邮箱联想的功能,比如:123@s,此时会自动补全新浪邮箱剩下的部分ina.com。我希望该功能的实现,在JXTextField中实现。于是,我写下了这样一句代码:
self.delegate = self;
运行这段代码,点击输入框,先是程序就再不响应了,XCode也没什么有用的提示,试一两次,XCode也不再响应了。
谷歌发现
- (BOOL)respondsToSelector:(SEL)aSelector
该方法会无限次调用。每次aSelector都为customOverlayContainer
解决办法
-1.在UIView子类上添加UITextField。
-2.重写 - (BOOL)respondsToSelector:(SEL)aSelector方法
- (BOOL)respondsToSelector:(SEL)aSelector
{
if(aSelector==@selector(customOverlayContainer)){
return NO;
}
return [super respondsToSelector:aSelector];}
但是customOverlayContainer这个是个私有API,提交审核不会通过,最终我用如下方法,成功通过审核:
- (BOOL)respondsToSelector:(SEL)aSelector
{
NSString *str = NSStringFromSelector(aSelector);
if([str hasPrefix:@"customOverlayC"]){
return NO;
}
return [super respondsToSelector:aSelector];}
stackoverflow相关内容 点击查看