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:

2.0(oc)UITextField 有关隐藏键盘_第1张图片
UIKeyboardTypeNumberPad.png

UIKeyboardTypePhonePad:

2.0(oc)UITextField 有关隐藏键盘_第2张图片
UIKeyboardTypePhonePad.png

UIKeyboardTypeDecimalPad:

2.0(oc)UITextField 有关隐藏键盘_第3张图片
UIKeyboardTypeDecimalPad.png

UIKeyboardTypeTwitter

2.0(oc)UITextField 有关隐藏键盘_第4张图片
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位置较为靠下,弹出键盘后,会将导航栏 也一起顶上去,显示效果 不理想

你可能感兴趣的:(2.0(oc)UITextField 有关隐藏键盘)