2.0(oc)UITextField 有关隐藏键盘

方法一

点击空白地方隐藏键盘(点击的地方控件有UITableView/UICollectionView的情况 会有延迟,或失效)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //1.获取textField所在的父视图self.view
    [self.view endEditing:YES];
   //2.直接调用  注销第一响应者 
   //[self.textField resignFirstResponder];
}

方法二

通过遵守UITextFieldDelegate 隐藏键盘

//1.遵守协议< UITextFieldDelegate >
//2.设置UITextField的键盘类型与返回键
field.returnKeyType = UIReturnKeyDone;
field.keyboardType = UIKeyboardTypeDefault;

注意 UIKeyboardType类型中以下几种类无法设置返回键

UIKeyboardTypeNumberPad:

UIKeyboardTypeNumberPad.png

UIKeyboardTypePhonePad:

UIKeyboardTypePhonePad.png

UIKeyboardTypeDecimalPad:

UIKeyboardTypeDecimalPad.png

UIKeyboardTypeTwitter

UIKeyboardTypeTwitter.png

//3.代码

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
//1.获取textField所在的父视图self.view
    [self.view endEditing:YES];
 //2.直接调用  注销第一响应者 
   //[textField resignFirstResponder];
    return YES;
}

方法三使用第三方

1.ZYKeyboardUtil
创建一个ZYKeyboard对象,为了让其生存在整个页面实现功能的时间段内,让你的controller持有他吧。

self.keyboardUtil = [[ZYKeyboardUtil alloc] init];

配置animateWhenKeyboardAppearAutomaticAnimBlock,即可全自动处理键盘升降遮挡输入控件问题,且控件resignFirstResponder后自动还原。
只需在Block里利用参数keyboardUtil调用adaptiveViewHandleWithController:adaptiveView:,第一个参数为当前页面controller,第二个参数接收一个可变参数,为当前页面内的单个/多个输入控件或者包裹输入控件的View。

__weak ViewController *weakSelf = self;
[_keyboardUtil setAnimateWhenKeyboardAppearAutomaticAnimBlock:^(ZYKeyboardUtil *keyboardUtil) {
    [keyboardUtil adaptiveViewHandleWithController:weakSelf adaptiveView:weakSelf.inputViewOne, weakSelf.inputViewSecond, weakSelf.inputViewThird, weakSelf.inputViewFourth, nil];
}];

ZYKeyboardUtil多个输入控件.gif

2.IQKeyboardManager

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // 键盘处理
         // 1.开启键盘处理
    [IQKeyboardManager sharedManager].enable = YES;
         // 2.点击背景回收键盘
    [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
         // 关闭键盘上方工具栏
    [IQKeyboardManager sharedManager].enableAutoToolbar = NO;
    }
IQKeyboardManager.gif

总结对比
1.ZYKeyboardUtil
优点:可以避免 ,UITextField位置较为靠下,弹出键盘后,会将导航栏 也一起顶上去问题。
缺点:代码相对于 IQKeyboardManager,需要每个页面都设置。

  1. IQKeyboardManager
    优点: 代码简洁,只需要在appledelegate.m中设置 几句代码 即可监听 所有的有关键盘弹出问题
    缺点: 如果UITextField位置较为靠下,弹出键盘后,会将导航栏 也一起顶上去,显示效果 不理想
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容