第一种使用NSNotification,比较麻烦,调用键盘尺寸
从键盘通知中获得键盘尺寸
键盘尺寸存在于NSNotification中。
1;在ViewController中添加keyboardDidShow和keyboardDidHide方法
2;在viewWillAppear中注册UIKeyboardDidshowNotification与UIKeyboardDidHideNotification。
3;在viewWillDisappear中取消对所有事件的订阅注册
4;在ViewController中添加一个Bool成员,跟踪键盘是否可见的状态。
ViewController.h
@interface ViewController : UIViewController{
BOOL keyboardVisible;
UIScrollView *scrollView;
}
- (void)keyboardDidShow: (NSNotification*) notif;
- (void)keyboardDidHide: (NSNotification*) notif;
@property (nonatomic, retain) UIScrollView *scrollView;
@end
ViewController.m
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
}
- (void)viewWillDisappear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (void) keyboardDidShow:(NSNotification *)notif {
//NSLog(@"%@", @"Received UIKeyboardDidShowNotification");
if (keyboardVisible) {
//NSLog(@"%@", @"Keyboard is already visible. Ignoring notifications.");
return;
}
//NSLog(@"Resizing smaller for keyboard");
// Get the origin of the keyboard when it finishes animating
NSDictionary *info = [notif userInfo];
NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
// Get the top of the keyboard in view's coordinate system.
// We need to set the bottom of the scrollview to line up with it
CGRect keyboardRect = [aValue CGRectValue];
keyboardRect = [self.view convertRect:keyboardRect fromView:nil];
CGFloat keyboardTop = keyboardRect.origin.y;
// Resize the scroll view to make room for the keyboard
CGRect viewFrame = self.view.bounds;
viewFrame.size.height = keyboardTop - self.view.bounds.origin.y;
self.scrollView.frame = viewFrame;
keyboardVisible = YES;
}
- (void) keyboardDidHide:(NSNotification *)notif {
//NSLog(@"%@", @"Received UIKeyboardDidHideNotification");
if (!keyboardVisible) {
//NSLog(@"%@", @"Keyboard already hidden. Ignoring notification.");
return;
}
// The keyboard was visible
//NSLog(@"%@", @"Resizing bigger with no keyboard");
// Resize the scroll view back to the full size of our view
self.scrollView.frame = self.view.bounds;
keyboardVisible = NO;
}
- (void)viewDidLoad
{
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
// scroll.contentSize = CGSizeMake(1000, 1000);
[self.view addSubview:scrollView];
UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(100, 300, 100, 100)];
//textView.font = [UIFont systemFontOfSize:20];
[scrollView addSubview:textView];
[super viewDidLoad];
[textView release];
self.scrollView.contentSize = self.view.frame.size;
}
第二种移动view,
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
中添加
bdimgview.frame = CGRectOffset(bdimgview.frame, 0, -120);
添加移动动画
[UIView beginAnimations:@"animateAdBannerOn" context:NULL];
[UIView setAnimationDuration:0.2];