zoukankan      html  css  js  c++  java
  • 键盘遮挡的处理

    .m文件相关方法

    @interface DemoViewController ()<UITextFieldDelegate> {
        UITextField * _activeField;  //作为第一响应者的UITextField
        CGRect        _originFrame;  //scrollView的初始frame
    }
    @end
    
    @implementation DemoViewController
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            [self registerForKeyboardNotifications]; //注册键盘事件
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view from its nib.
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    - (void) viewDidLayoutSubviews {
        [super viewDidLayoutSubviews];
        self.bgScrollView.backgroundColor = [UIColor lightGrayColor];
    
        _originFrame = self.bgScrollView.frame;  //记录scrollView的初始frame
    }
    
    - (void)registerForKeyboardNotifications {
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWasShown:)
                                                     name:UIKeyboardWillShowNotification object:nil];
        
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWillBeHidden:)
                                                     name:UIKeyboardWillHideNotification object:nil];
        
    }
    
    - (void)keyboardWillBeHidden:(NSNotification*)aNotification {
        _bgScrollView.frame = _originFrame;  //键盘隐藏,复原scrollView的frame为初始值
    }
    
    - (void)keyboardWasShown:(NSNotification*)aNotification {
        NSDictionary* info = [aNotification userInfo];
        CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;  //键盘尺寸,这个在输入中英文的时候是不一样的
    
        //先将scrollview的frame复原,避免因为键盘中英文切换而造成frame的两次该改变
        self.bgScrollView.frame = _originFrame;
        CGRect scrollViewFrame = self.bgScrollView.frame;
        scrollViewFrame.size.height -= kbSize.height;
        self.bgScrollView.frame = scrollViewFrame;
        
        self.bgScrollView.contentSize = CGSizeMake(320, self.fTxtField.frame.size.height + self.fTxtField.frame.origin.y);
        [_bgScrollView scrollRectToVisible:_activeField.frame animated:YES];
        
    }
    
    - (void) textFieldDidBeginEditing:(UITextField *)textField {
        _activeField = textField;
    }
    - (void) textFieldDidEndEditing:(UITextField *)textField{} - (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { if ([string isEqualToString:@" "]) { [textField resignFirstResponder]; return NO; } return YES; }

    界面布局如下:

  • 相关阅读:
    canvas_13 绘制图像
    canvas_12 径向渐变
    银行卡账号识别
    python sort
    直方图 与 均衡化
    轮廓检测 与 模板匹配
    Canny边缘检测
    pytorch opencv基础
    全局特征、局部特征 maxpool
    One-shot learning
  • 原文地址:https://www.cnblogs.com/benbenzhu/p/3937278.html
Copyright © 2011-2022 走看看