iOS之键盘挡住输入框的解决方法

看过很多解决此类问题的方法,感觉都很棒,我这里做个简单的总结和推荐方法。


输入框是继承UITextFiled的控件,他有两个代理方法,能够解决上述问题,并且很简单,很适用,是本人极力推荐的方法。


在.h文件中


//

//  LYXViewController.h

//  helloWord

//

//  Created by liyongxing on 13-7-2.

//  Copyright (c) 2013 liyongxing. All rights reserved.

//


#import <UIKit/UIKit.h>


@interface LYXViewController :UIViewController


@property (nonatomic ,strong)UIButton * button;


@property (nonatomic ,strong)UITextField * textFiled;



@end


//在.m文件中

//

//  LYXViewController.m

//  helloWord

//

//  Created by liyongxing on 13-7-2.

//  Copyright (c) 2013 liyongxing. All rights reserved.

//


#import "LYXViewController.h"


#import <QuartzCore/QuartzCore.h>


@interface LYXViewController ()<UITextFieldDelegate>


@end


@implementation LYXViewController


- (void)viewDidLoad

{

    [superviewDidLoad];

    

    //创建一个UITextFiled对象

    

    self.textFiled = [[UITextFieldalloc]initWithFrame:CGRectMake(50,300,200,50)];

    

    self.textFiled.backgroundColor = [UIColorbrownColor];

    

    //引用代理

    

   self.textFiled.delegate =self;

    

    [self.view addSubview:self.textFiled];



}


#pragma mark-----------实现代理方法------------------


//当开始编辑时触发的方法,就是将输入框向上推 a个距离,前提时a的值大于零,如果不大于,则不会产生向上推动的方法,此时,可在将场数量,后面的50再多加些,比如80100,慢慢尝试


-(void)textFieldDidBeginEditing:(UITextField *)textField

{

    

    //设置向上推动的动画时间,此位固定写法,0.30f的值可以自己调,位置不能和判断的方法调换,否则不会生效

    

    NSTimeInterval animationRadius =0.30f;

    

    //这两个方法是有先后顺序的,不能调换

    

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

    

    [UIView setAnimationDuration:animationRadius];


   //

    

    

    //设置一个常量,用以判断此输入框是否需要向上推动,他会判断同一界面上的所有UITextFiled的对象,而有些方法只是针对一个,所以,我建议采用这个方法

 

    NSInteger a = textField.frame.origin.y - (self.view.frame.size.height-216.0)+50;


    

   if (a >0)

    {

        

        

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

        

    }

    

    

    [UIView commitAnimations];



}


//当编辑后,恢复原来的视图大小


-(void)textFieldDidEndEditing:(UITextField *)textField

{


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


}


//当编辑完成后,按return键推掉键盘


-(BOOL)textFieldShouldReturn:(UITextField *)textField

{


   return  [self.textFiled resignFirstResponder];

  

}



- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    

}


@end







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值