iOS:键盘弹出和收起的通知使用

简介:

介绍:不论是UITextField,还是UITextView,使用它们输入文字时都是有键盘的弹出,此时可能会挡住我们创建的一分部其他视图,此时,就需要根据键盘的高度将我们被隐藏的部分View做向上或者向下平移,使用tansform或者动画UIViewAnimation均可,使用如下:

 

这是跟键盘有关的所有通知:

复制代码
//键盘显示和隐藏
UIKIT_EXTERN NSString *const UIKeyboardWillShowNotification;
UIKIT_EXTERN NSString *const UIKeyboardDidShowNotification;
UIKIT_EXTERN NSString *const UIKeyboardWillHideNotification;
UIKIT_EXTERN NSString *const UIKeyboardDidHideNotification;

//键盘弹出后,通过这个key可以取出需要的键盘的frame,我们就是通过这frame的高度来做平移的 UIKIT_EXTERN NSString
*const UIKeyboardFrameBeginUserInfoKey NS_AVAILABLE_IOS(3_2); // NSValue of CGRect UIKIT_EXTERN NSString *const UIKeyboardFrameEndUserInfoKey NS_AVAILABLE_IOS(3_2); // NSValue of CGRect UIKIT_EXTERN NSString *const UIKeyboardAnimationDurationUserInfoKey NS_AVAILABLE_IOS(3_0); // NSNumber of double UIKIT_EXTERN NSString *const UIKeyboardAnimationCurveUserInfoKey NS_AVAILABLE_IOS(3_0); // NSNumber of NSUInteger (UIViewAnimationCurve) UIKIT_EXTERN NSString *const UIKeyboardIsLocalUserInfoKey NS_AVAILABLE_IOS(9_0); // NSNumber of BOOL //键盘将要改变时的通知 UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification NS_AVAILABLE_IOS(5_0); UIKIT_EXTERN NSString *const UIKeyboardDidChangeFrameNotification NS_AVAILABLE_IOS(5_0); // These keys are superseded by UIKeyboardFrameBeginUserInfoKey and UIKeyboardFrameEndUserInfoKey. UIKIT_EXTERN NSString *const UIKeyboardCenterBeginUserInfoKey NS_DEPRECATED_IOS(2_0, 3_2) __TVOS_PROHIBITED; UIKIT_EXTERN NSString *const UIKeyboardCenterEndUserInfoKey NS_DEPRECATED_IOS(2_0, 3_2) __TVOS_PROHIBITED; UIKIT_EXTERN NSString *const UIKeyboardBoundsUserInfoKey NS_DEPRECATED_IOS(2_0, 3_2) __TVOS_PROHIBITED;
复制代码

 

demo:

//注册通知

    //首先在ViewDidload中添加对键盘通知的监听
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

//键盘将要显示

复制代码
-(void)keyboardWillShow:(NSNotification *)notification
{
    //NSLog(@"keyboardWillShow:%@",notification);
    
    NSDictionary *userInfo = [notification userInfo];
    CGFloat duration = [[userInfo objectForKey:@"UIKeyboardAnimationDurationUserInfoKey"] doubleValue];
    CGRect rect = [[userInfo objectForKey:@"UIKeyboardFrameEndUserInfoKey"]CGRectValue];
    
    [UIView animateWithDuration:duration animations:^{
        self.view.transform = CGAffineTransformMakeTranslation(0, -(SCREEN_HEIGHT-rect.origin.y));
    }];
}
复制代码

//键盘将要隐藏

复制代码
-(void)keyboardWillHide:(NSNotification *)notification
{
    //NSLog(@"keyboardWillHide:%@",notification);
    
    NSDictionary *userInfo = [notification userInfo];
    CGFloat duration = [[userInfo objectForKey:@"UIKeyboardAnimationDurationUserInfoKey"] doubleValue];
    
    [UIView animateWithDuration:duration animations:^{
        self.view.transform = CGAffineTransformIdentity;
    }];
}
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/5391454.html ,如需转载请自行联系原作者
相关文章
|
1月前
|
iOS开发
解决使用document.activeElement.blur()禁止弹出手机默认键盘ios版本17以上会出现闪屏问题
解决使用document.activeElement.blur()禁止弹出手机默认键盘ios版本17以上会出现闪屏问题
17 2
|
8月前
|
iOS开发
我给 iOS 系统打了个补丁——修复 iOS 16 系统键盘重大 Crash(下)
我给 iOS 系统打了个补丁——修复 iOS 16 系统键盘重大 Crash(下)
258 1
|
8月前
|
存储 安全 编译器
我给 iOS 系统打了个补丁——修复 iOS 16 系统键盘重大 Crash(上)
我给 iOS 系统打了个补丁——修复 iOS 16 系统键盘重大 Crash(上)
266 0
|
iOS开发
iOS开发 - 千万不要把通知注册写在viewWillAppera里面
iOS开发 - 千万不要把通知注册写在viewWillAppera里面
79 0
|
iOS开发
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
iOS开发- runtime基本用法解析和用runtime给键盘添加工具栏和按钮响应事件
118 0
|
iOS开发
IOS——UITextField自动适应键盘弹出
IOS——UITextField自动适应键盘弹出
145 0
|
iOS开发
iOS代理 通知 block传值的规范写法
iOS代理 通知 block传值的规范写法
117 0
|
iOS开发
iOS跟随键盘走动的工具栏
iOS跟随键盘走动的工具栏
256 0
iOS跟随键盘走动的工具栏
|
存储 前端开发 程序员
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
在iOS开发中会遇到一些选择选项的需求,而且点击一个控件弹出一个选择框,选择之后展示到前端,然后再把选择的内容传给后台或者做本地存储。这个需求对于大多数开发者来说可以为小儿科,但是作为一个爱记录的程序猿来说相当可贵,所以还是那句话,只分享给有缘人,大牛可以飘过,不喜勿喷请走开。
407 0
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
|
Android开发 iOS开发 UED
iOS 自定义收款键盘
在iOS8之前,iOS系统的输入法只能使用苹果官方提供的输入法。 对于中文来说,官方的输入法并不好用,或者说不够好用,词库,联想,云输入等都没有或者和搜狗输入法,百度输入法等有中国特色的输入法相比有一定的差距。
170 0