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