zoukankan      html  css  js  c++  java
  • 通用方法解决UITextFiled输入的时候,键盘遮挡问题

    我们在用键盘录入的时候,有可能会遮挡录入框,所以我们应调整UIView的位置,使其不被遮挡。我写了一个通用的方法可以解决这个问题:
    ​​1. [代码][C/C++]代码     
        - (void)moveView:(UITextField *)textField leaveView:(BOOL)leave  
        {  
            UIView *accessoryView = textField.inputAccessoryView;  
            UIView *inputview     = textField.inputView;  
              
            int textFieldY = 0;  
            int accessoryY = 0;  
            if (accessoryView && inputview)   
            {  
                CGRect accessoryRect = accessoryView.frame;  
                CGRect inputViewRect = inputview.frame;  
                accessoryY = 480 - (accessoryRect.size.height + inputViewRect.size.height);  
            }  
            else if (accessoryView)  
            {  
                CGRect accessoryRect = accessoryView.frame;  
                accessoryY = 480 - (accessoryRect.size.height + 216);  
            }  
            else if (inputview)  
            {  
                CGRect inputViewRect = inputview.frame;  
                accessoryY = 480 -inputViewRect.size.height;  
            }  
            else  
            {  
                accessoryY = 264; //480 - 216;  
            }  
              
              
            CGRect textFieldRect = textField.frame;  
            textFieldY = textFieldRect.origin.y + textFieldRect.size.height + 20;  
              
            int offsetY = textFieldY - accessoryY;  
            if (!leave && offsetY > 0)   
            {  http://www.huiyi8.com/vi/
                int y_offset = -5;  
                  
                y_offset += -offsetY;  
                  
                CGRect viewFrame = self.view.frame;  
                  
                viewFrame.origin.y += y_offset;  
                  
                [UIView beginAnimations:nil context:NULL];  
                [UIView setAnimationBeginsFromCurrentState:YES];  
                [UIView setAnimationDuration:0.3];  
                [self.view setFrame:viewFrame];  
                [UIView commitAnimations];  
            }  
            else  
            {  vi素材大全
                CGRect viewFrame = CGRectMake(0, 20, 320, 460);  
                  
                [UIView beginAnimations:nil context:NULL];  
                [UIView setAnimationBeginsFromCurrentState:YES];  
                [UIView setAnimationDuration:0.3];  
                [self.view setFrame:viewFrame];  
                [UIView commitAnimations];  
            }  
        }  
    2. [代码]用法很简单,在UITextFieldDelegate的两个方法里分别调用一下这个方法就OK了,如下示例:  
        - (void)textFieldDidBeginEditing:(UITextField *)textField  
        {  
                [self moveView:textField leaveView:NO];  
        }  
          
        - (void)textFieldDidEndEditing:(UITextField *)textField;  
        {  
            [self moveView:textField leaveView:YES];  
        }  

  • 相关阅读:
    014 要区分好slice,splice和split,方法如下
    108 shutil模块(了解)
    107 pathlib模块(了解)
    106 collections模块
    105 typing模块
    104 re模块
    103_01 matplotlib模块
    102 pandas模块
    101 numpy模块
    SQLserver找出执行慢的SQL语句
  • 原文地址:https://www.cnblogs.com/xkzy/p/3813417.html
Copyright © 2011-2022 走看看