zoukankan      html  css  js  c++  java
  • iOS开发——使用Autolayout弹出键盘

    参考:

    http://segmentfault.com/q/1010000002420050

    http://blog.csdn.net/qq448631961/article/details/40345653

    思路:

    在整个View下面塞进一个高度为0的视图(使用低优先级约束),当键盘改变时改变该View的高度即可。

    constraint 有一个唯一可以修改的属性 constant,我承认它的名字确实很具有迷惑性。。。
    以题主提到的高度问题为例,可以保存这个高度 constraint 的引用,在键盘出现和收起时

    - (void)keyboardDidShowNotification
    {
        self.viewHeightConstraint.constant = 100.f;
        [self.myView layoutIfNeed];
    }

    - (void)keyboardDidHideNotification
    {
        self.viewHeightConstraint.constant = 300.f;
        [self.myView layoutIfNeed];
    }

    我的代码:

    注册通知:

       1:   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillChangeFrameNotification object:nil];

    约束

    @property (nonatomic,strong) NSLayoutConstraint* keyboardConstraint;

    初始为0

       1:  self.keyboardConstraint = [NSLayoutConstraint constraintWithItem:self.keyboardView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:0];
       1:  - (void)keyboardWillShow:(NSNotification *)notification{
       2:      CGRect kbFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
       3:      self.keyboardConstraint.constant = kbFrame.size.height;
       4:      [self.view addConstraint:self.keyboardConstraint];
       5:      //    [self.inputView needsUpdateConstraints];
       6:      [self.view setNeedsLayout];
       7:      [self.view layoutIfNeeded];
       8:      if (self.messages.count > 0){
       9:      NSIndexPath *idxP = [NSIndexPath indexPathForRow:(self.messages.count - 1) inSection:0];
      10:          [self.tableView scrollToRowAtIndexPath:idxP atScrollPosition:UITableViewScrollPositionBottom animated:YES];}
      11:      
      12:  }
      13:   
      14:  - (void)keyboardWillHidden{
      15:      
      16:      [self.view endEditing:YES];
      17:      [UIView animateWithDuration:0.25 animations:^{
      18:          //        self.keyboardConstraint.constant = 0;
      19:          self.keyboardConstraint.constant = 0;
      20:          //        [self.view removeConstraint:self.keyboardConstraint];
      21:          [self.view setNeedsLayout];
      22:          [self.view layoutIfNeeded];
      23:      }];
      24:      
      25:  }
  • 相关阅读:
    笨办法06字符串(string)和文本
    react学习之路-配制antd-mobile
    react.js学习之路六
    bug
    react.js学习之路五
    react.js学习之路四
    react.js学习之路三
    react.js学习之路二
    react.js学习之路一
    MVC,MVP 和 MVVM 的区别之处
  • 原文地址:https://www.cnblogs.com/zeyang/p/4457968.html
Copyright © 2011-2022 走看看