ios TextField 不被键盘遮住

     

     

    首先放一个scrollView窗口,将Scroll View视图占整个屏幕。

     向Scroll View    添加TextField 控件。


       首先,ViewController.h  代码如下;

    #import <UIKit/UIKit.h>

@interface ViewController : UIViewController<UITextFieldDelegate>
{
    BOOL keyboardVisible;
}
@property (weak,nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak,nonatomic) IBOutlet UITextField *textField;

@end



ViewController.m 代码如下:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    self.scrollView.contentSize = CGSizeMake(320,600);

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.textField.delegate = self;
    //[super viewDidLoad];

}
//页面加载前调用的方法,注册两个通知:一个是键盘弹出来的通知,另外一个是键盘隐藏的通知,不同的通知调用不同的方法进行处理
-(void) viewWillAppear:(BOOL)animated{
    //键盘弹起的通知
    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(keyboardDidShow:)
     name:UIKeyboardDidShowNotification
     object:self.view.window];
    //键盘隐藏的通知
    [[NSNotificationCenter defaultCenter]
     addObserver:self
     selector:@selector(keyboardDidHide:)
     name:UIKeyboardDidHideNotification
     object:nil];
}
-(BOOL)textFieldShouldReturn:(UITextField *)textFieldView{
    [textFieldView resignFirstResponder];
    return NO;
}
//收到键盘弹出事件
 -(void)keyboardDidShow:(NSNotification *)notif
{
    if(keyboardVisible)
    {
        return;
    }
    
    NSDictionary * info = [notif userInfo];
    NSValue * aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGSize keyboardSize = [aValue CGRectValue].size;
    
    CGRect viewFrame = self.scrollView.frame;
    viewFrame.size.height -= (keyboardSize.height);
    self.scrollView.frame = viewFrame;
    
    CGRect textFieldRect =[self.textField frame];
    [self.scrollView scrollRectToVisible:textFieldRect animated:YES];
    keyboardVisible = YES;
    
    
}
// 收到键盘隐藏事件

-(void)keyboardDidHide:(NSNotification*)note{
    
    NSDictionary * info = [note userInfo];
    NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGSize keyboardSize = [aValue CGRectValue].size;
    
    CGRect viewFrame = self.scrollView.frame;
    viewFrame.size.height += (keyboardSize.height);
    self.scrollView.frame = viewFrame;
    
    if(!keyboardVisible)
    {
        return;
    }
    keyboardVisible = NO;

    
}

//页面消失前取消通知
-(void)viewWillDisappear:(BOOL)animated{
    [[NSNotificationCenter defaultCenter]
     removeObserver:self
     name:UIKeyboardDidShowNotification
     object:nil];
    
    [[NSNotificationCenter defaultCenter]
     removeObserver:self
     name:UIKeyboardDidHideNotification
     object:nil];
}


posted @ 2015-01-03 22:08  恋恋西风  阅读(280)  评论(0编辑  收藏  举报