zoukankan      html  css  js  c++  java
  • 轻松搞定UITableView中的键盘处理

    代码如下:

    1,通知:

    #pragma mark - 键盘处理

    -(void) keyboardWillShow:(NSNotification *)note{

        // get keyboard size and loctaion

        //键盘的frame

        CGRect keyboardBounds;

        [[note.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardBounds];

        keyboardBounds = [self.view convertRect:keyboardBounds toView:nil];

        

        //主窗口

        UIWindow* win = [UIApplication sharedApplication].keyWindow;

        DLog(@"%@",win);

        

        //_currentTF是cell中正在编辑的TF

        UITableViewCell* cell = [PCMNWE cellByTableView:self.tableView tf:_currentTF];

        NSIndexPath* indexPath = [self.tableView indexPathForCell:cell];

        CGRect frame = [self.tableView convertRect:[self.tableView rectForRowAtIndexPath:indexPath] toView:win];

        DLog(@"%f",keyboardBounds.size.height);

        CGFloat height = frame.origin.y+44.0;

        if ((height + keyboardBounds.size.height) > UI_SCREEN_HEIGHT) {

            CGRect frameNew = self.tableView.frame;

            frameNew.origin.y -= keyboardBounds.size.height - (UI_SCREEN_HEIGHT - height);

            [UIView animateWithDuration:0.2 animations:^{

                self.tableView.frame = frameNew;

            }];

        }

        

    }

    2,代理:

    - (void)textFieldDidEndEditing:(UITextField *)textField {

        

        //将self.tableView.frame打回原形

        [UIView animateWithDuration:0.3 animations:^{

            self.tableView.frame = CGM(0,0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT - UI_STATUS_BAR_HEIGHT - 44.0);

        }];

    }

    暂时没有发现这段代码有什么问题.

    若有BUG,欢迎加QQ指教:771722918

  • 相关阅读:
    190. Reverse Bits
    150. Evaluate Reverse Polish Notation
    【UML】状态图与活动图
    【UML】类图与对象图
    【UML】用例图
    【运维】Dell R710如何开启VT服务
    【运维】Dell R710如何做Raid0与Raid5
    【运维】略谈Raid级别
    【VMware vSphere】VMware vSphere简单了解
    【Linux】在Linux上安装VNC
  • 原文地址:https://www.cnblogs.com/iOS771722918/p/4363829.html
Copyright © 2011-2022 走看看