• 防止键盘盖住控件


    防止键盘盖住控件

    当程序需要输入时,并且输入框位置靠下时,键盘出现会遮挡输入框.这是开发过程中经常遇到的问题.解决方法就是获取键盘的高度,同时让整个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;
    }
    复制代码

  • 相关阅读:
    从头认识java-17.4 具体解释同步(2)-具体解释竞争条件
    ProgressBar的indeterminateDrawable属性在安卓6.0上的问题
    Android开源-NineOldAndroids
    面向对象语言的多态性问题
    Android Data Binding代码实践(告别findViewById)(四)
    【c语言】将正数变成相应的负数,将负数变成相应的正数
    Android 消息处理源代码分析(2)
    怎样学习嵌入式软件
    C++ regex
    C++中两个类相互include的问题
  • 原文地址:https://www.cnblogs.com/yxt9322yxt/p/4848677.html
Copyright © 2020-2023  润新知