• ios TextField 不被键盘遮住


         

         

        首先放一个scrollView窗口,将Scroll View视图占整个屏幕。

         向Scroll View    添加TextField 控件。


           首先,ViewController.h  代码如下;

        #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController<UITextFieldDelegate>
    {
        BOOL keyboardVisible;
    }
    @property (weak,nonatomic) IBOutlet UIScrollView *scrollView;
    @property (weak,nonatomic) IBOutlet UITextField *textField;
    
    @end



    ViewController.m 代码如下:

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        self.scrollView.contentSize = CGSizeMake(320,600);
    
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        self.textField.delegate = self;
        //[super viewDidLoad];
    
    }
    //页面加载前调用的方法,注册两个通知:一个是键盘弹出来的通知,另外一个是键盘隐藏的通知,不同的通知调用不同的方法进行处理
    -(void) viewWillAppear:(BOOL)animated{
        //键盘弹起的通知
        [[NSNotificationCenter defaultCenter]
         addObserver:self
         selector:@selector(keyboardDidShow:)
         name:UIKeyboardDidShowNotification
         object:self.view.window];
        //键盘隐藏的通知
        [[NSNotificationCenter defaultCenter]
         addObserver:self
         selector:@selector(keyboardDidHide:)
         name:UIKeyboardDidHideNotification
         object:nil];
    }
    -(BOOL)textFieldShouldReturn:(UITextField *)textFieldView{
        [textFieldView resignFirstResponder];
        return NO;
    }
    //收到键盘弹出事件
     -(void)keyboardDidShow:(NSNotification *)notif
    {
        if(keyboardVisible)
        {
            return;
        }
        
        NSDictionary * info = [notif userInfo];
        NSValue * aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
        CGSize keyboardSize = [aValue CGRectValue].size;
        
        CGRect viewFrame = self.scrollView.frame;
        viewFrame.size.height -= (keyboardSize.height);
        self.scrollView.frame = viewFrame;
        
        CGRect textFieldRect =[self.textField frame];
        [self.scrollView scrollRectToVisible:textFieldRect animated:YES];
        keyboardVisible = YES;
        
        
    }
    // 收到键盘隐藏事件
    
    -(void)keyboardDidHide:(NSNotification*)note{
        
        NSDictionary * info = [note userInfo];
        NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
        CGSize keyboardSize = [aValue CGRectValue].size;
        
        CGRect viewFrame = self.scrollView.frame;
        viewFrame.size.height += (keyboardSize.height);
        self.scrollView.frame = viewFrame;
        
        if(!keyboardVisible)
        {
            return;
        }
        keyboardVisible = NO;
    
        
    }
    
    //页面消失前取消通知
    -(void)viewWillDisappear:(BOOL)animated{
        [[NSNotificationCenter defaultCenter]
         removeObserver:self
         name:UIKeyboardDidShowNotification
         object:nil];
        
        [[NSNotificationCenter defaultCenter]
         removeObserver:self
         name:UIKeyboardDidHideNotification
         object:nil];
    }
    


  • 相关阅读:
    Jasmine入门
    最近面试js部分试题总结
    最近面试前端面试题整理(css部分)
    开发自己的类库
    关于FEer发展方向的思考
    工作那些事(八)工作的目标——《360周鸿祎在新员工入职培训上的讲话》读后感
    工作那些事(七)选择与被选择
    工作那些事(六)谈谈好的编程习惯的好处
    工作那些事(五)谈谈项目资料整理和积累
    工作那些事(四)大公司VS小公司
  • 原文地址:https://www.cnblogs.com/sharecenter/p/5621102.html
Copyright © 2020-2023  润新知