zoukankan      html  css  js  c++  java
  • Keyboard 遮挡 UITextField

    方法一:通过View的中心位置来移动

    -(BOOL)textFieldShouldReturn:(id)sender
    {
        self.view.center=CGPointMake(160,207);   
        [sender resignFirstResponder];
        return YES;
    }
    - (BOOL)textFieldShouldBeginEditing:(id)sender
    {
        UITextField *textField = (UITextField *)sender;
        if(textField.tag==1)
        {
            self.view.center =CGPointMake(self.view.center.x,100);
        }
        else if(textField.tag==2)
        {
            self.view.center =CGPointMake(self.view.center.x,90);
        }
        return YES;
    }
    

      方法二:通过判断键盘的位置来设置view的frame

    - (void)keyboardWillShow:(NSNotification *)noti
    {        
        //键盘输入的界面调整        
        //键盘的高度
        float height = 216.0;                
        CGRect frame = self.view.frame;        
        frame.size = CGSizeMake(frame.size.width, frame.size.height - height);        
        [UIView beginAnimations:@"Curl"context:nil];//动画开始          
        [UIView setAnimationDuration:0.30];           
        [UIView setAnimationDelegate:self];          
        [self.view setFrame:frame];  
        //[self.view setFrame:CGRectMake(0, -30, frame.size.width, frame.size.height)];
        [UIView commitAnimations];         
    }
    
    
    - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {        
        // When the user presses return, take focus away from the text field so that the keyboard is dismissed.        
        NSTimeInterval animationDuration = 0.30f;        
        [UIView beginAnimations:@"ResizeForKeyboard" context:nil];        
        [UIView setAnimationDuration:animationDuration];        
        CGRect rect = CGRectMake(0.0f, 0.0f, self.view.frame.size.width, self.view.frame.size.height);        
        self.view.frame = rect;        
        [UIView commitAnimations];        
        [textField resignFirstResponder];
        return YES;        
    }
    
    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {        
        CGRect frame = textField.frame;
        int offset = frame.origin.y + 50 - (self.view.frame.size.height - 216.0);//键盘高度216
        NSTimeInterval animationDuration = 0.30f;                
        [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];                
        [UIView setAnimationDuration:animationDuration];
        float width = self.view.frame.size.width;                
        float height = self.view.frame.size.height;        
        if(offset > 0)
        {
            CGRect rect = CGRectMake(0.0f, -offset,width,height);                
            self.view.frame = rect;        
        }        
        [UIView commitAnimations];                
        
    }

    推荐使用第一种,方便快捷,并且好理解。

  • 相关阅读:
    【剑指Offer】21、栈的压入、弹出序列
    【剑指Offer】20、包含min函数的栈
    【剑指Offer】19、顺时针打印矩阵
    【Shell编程】Shell基本语法
    【Shell编程】Shell程序设计
    linux 大中括号变量解读
    Python 二进制,十进制,十六进制转换
    Python3.x和Python2.x的区别
    python通过SSH登陆linux并操作
    PEP8特性
  • 原文地址:https://www.cnblogs.com/foxmin/p/2489481.html
Copyright © 2011-2022 走看看