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

  • 相关阅读:
    1040 Longest Symmetric String (25)
    1068 Find More Coins (30)
    1045 Favorite Color Stripe (30)
    1008 数组元素循环右移问题 (20)
    1007. 素数对猜想
    1005. 继续(3n+1)猜想 (25)
    1001. 害死人不偿命的(3n+1)猜想 (15)
    递归经典面试题_ 小例
    简单实现_控制台小时钟
    使用Timer组件_实现定时更改窗体颜色
  • 原文地址:https://www.cnblogs.com/iOS771722918/p/4363829.html
Copyright © 2011-2022 走看看