ios TextField 不被键盘遮住

来源:互联网 发布:python pack 编辑:程序博客网 时间:2024/04/27 20:00

     

     

    首先放一个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];}


0 0
原创粉丝点击