• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
那一季&花开
博客园    首页    新随笔    联系   管理    订阅  订阅

防止键盘盖住控件

防止键盘盖住控件

 

当程序需要输入时,并且输入框位置靠下时,键盘出现会遮挡输入框.这是开发过程中经常遇到的问题.解决方法就是获取键盘的高度,同时让整个view的位置随键盘而改变.

首先在设计视图中拖入一个textField,位置靠下.
根据通知获取键盘状态

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardWillShowNotification object:nil];

注:这里选择键盘将要出现时触发事件,如果选足didShow,在键盘彻底出现后textfield才会移动,影响视觉.

 

//改变被背景位置

复制代码
-(void)keyboardDidShow:(NSNotification *)notif
{
    NSLog(@"键盘已出现");
    NSDictionary *info=[notif userInfo];
    NSValue *aValue=[info objectForKey:UIKeyboardFrameEndUserInfoKey];
    //获取键盘大小
    CGSize keyboardSize=[aValue CGRectValue].size;
    //因为控件的大小不能直接更改,所以借助第三者传递
    CGRect viewRect=[self.view frame];
    viewRect.origin.y=viewRect.origin.y-keyboardSize.height;
    self.view.frame=viewRect;
}
复制代码

注:因为无法直接改变高度,所以在这里是通过第三者赋值来传递,如果有更高的方法希望能够告诉我,我再改进.

 

同样的道理,获取键盘下落通知,改变背景位置

复制代码
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardDidDisappear:) name:UIKeyboardWillHideNotification object:nil];


-(void)keyboardDidDisappear:(NSNotification *)notif
{
    NSLog(@"键盘下落了");
    NSDictionary *info=[notif userInfo];
    NSValue *aValue=[info objectForKey:UIKeyboardFrameEndUserInfoKey];
    //获取键盘大小
    CGSize keyboardSize=[aValue CGRectValue].size;
    //因为控件的大小不能直接更改,所以借助第三者传递
    CGRect viewRect=[self.view frame];
    viewRect.origin.y=viewRect.origin.y+keyboardSize.height;
    self.view.frame=viewRect;
}
复制代码

posted @ 2015-09-30 11:21  那一季&花开  阅读(238)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3