博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
键盘与TextField覆盖问题解决
阅读量:5238 次
发布时间:2019-06-14

本文共 2085 字,大约阅读时间需要 6 分钟。

//

//  ViewController.m

//  键盘通知加动画

//

//  Created by rimi on 15/8/22.

//  Copyright (c) 2015 LiuCong. All rights reserved.

//

 

#import "ViewController.h"

 

@interface ViewController ()<UITextFieldDelegate>

 

@property(nonatomic, strong) UITextField *TextF;

 

@property(nonatomic, assign) NSInteger keyboardY;

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    

    //定义一个TextField

    UITextField *TextF = [[UITextField alloc] init];

    TextF.bounds = CGRectMake(0, 0, 200, 45);

    TextF.backgroundColor = [UIColor colorWithRed:0.823 green:0.766 blue:1.000 alpha:1.000];

    TextF.center = CGPointMake(CGRectGetMidX(self.view.bounds), 500);

    [TextF setBorderStyle:UITextBorderStyleRoundedRect];

    self.TextF = TextF;

    //遵守UITextFieldDelegate

    TextF.delegate = self;

    

    [self.view addSubview:TextF];

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

    

    

}

 

//当用户按下return键或者按回车键,keyboard消失

-(BOOL)textFieldShouldReturn:(UITextField *)textField

{

    [textField resignFirstResponder];

    return YES;

}

 

//输入框编辑完成以后,将视图恢复到原始状态

-(void)textFieldDidEndEditing:(UITextField *)textField

{

    self.view.frame =CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

}

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

 

    //获取键盘高度

    NSDictionary* info = [notification userInfo];

    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

    //获取输入框的大小

    CGRect frame = self.TextF.frame;

    //计算输入框需要移动的距离

    int offset = frame.origin.y + self.TextF.frame.size.height - (self.view.frame.size.height - kbSize.height);

    //动画

    NSTimeInterval animationDuration = 0.30f;

    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];

    [UIView setAnimationDuration:animationDuration];

    

    //将视图的Y坐标向上移动offset个单位,以使下面腾出地方用于软键盘的显示

    if(kbSize.height > 0)

        self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);

    [UIView commitAnimations];

    

}

 

 

@end

转载于:https://www.cnblogs.com/jgyhc/p/4750438.html

你可能感兴趣的文章
oracle函数 NLS_LOWER(x[,y])
查看>>
free内存监控
查看>>
Bean in Configuration Or Component
查看>>
JavaScript基础知识梳理----正则表达式
查看>>
USACO Training完结感想
查看>>
python-19 随机模块 random
查看>>
Xcode8更新约束
查看>>
《JAVA与模式》之状态模式
查看>>
jQuery_Tab切换
查看>>
软件合作开发:2012年年底给苏州工业园区某家软件企业实施C#.NET软件开发系统框架的经验小结...
查看>>
jquery操作select(增加,删除,清空)
查看>>
Oracle 10gR2 RAC
查看>>
centos中跳过权限修改密码
查看>>
jQuery - Detect value change on hidden input field
查看>>
猜数字游戏-python
查看>>
springBoot集成 quartz动态定时任务
查看>>
LCD驱动程序(一)
查看>>
Building Performant Expand & Collapse Animations
查看>>
P1107 最大整数
查看>>
1085 数字游戏
查看>>