您的位置:首页 > 移动开发 > IOS开发

iOS解决TextField被键盘遮住的问题

2013-06-14 18:50 369 查看
首先,我们在ViewController.h中
@interface ViewController : UIViewController<UITextFieldDelegate>
@property (strong, nonatomic) UIScrollView* scrollView;@property (strong, nonatomic) UITextField* textField;@end

之后在ViewController.m

@implementation ViewController
- (void)viewDidLoad{ [superviewDidLoad];
self.scrollView = [[UIScrollViewalloc] initWithFrame:CGRectMake(0, 0, 320, 600)]; [self.viewaddSubview:self.scrollView];

self.textField = [[UITextFieldalloc] initWithFrame:CGRectMake(50, 400, 100, 30)];self.textField.backgroundColor = [UIColorwhiteColor]; [self.scrollViewaddSubview:self.textField];
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(textShowBegin:) name:UIKeyboardWillShowNotificationobject:nil];
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyBoardDidHidden) name:UIKeyboardWillHideNotificationobject:nil];
[self.textFieldaddTarget:selfaction:@selector(textFieldResign) forControlEvents:UIControlEventEditingDidEndOnExit];

}-(void)keyBoardDidHidden{self.scrollView.contentInset = UIEdgeInsetsZero;}-(void)textFieldResign{ [self.textFieldresignFirstResponder];}

-(void)textFieldDidBeginEditing:(UITextField *)textField{self.textField = textField;}-(void)textShowBegin:(NSNotification*)aNotification{NSDictionary* info = aNotification.userInfo;NSLog(@"%@",info);
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;UIEdgeInsets contentInsets = UIEdgeInsetsMake(0, 0, kbSize.height, 0);

self.scrollView.contentInset = contentInsets;//获取整个视图的大小和位置CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;if (!CGRectContainsPoint(aRect, self.textField.frame.origin)) {
CGPoint scrollPoint = CGPointMake(0, self.textField.frame.origin.y - kbSize.height); [self.scrollViewsetContentOffset:scrollPoint animated:YES];
}
}下载地址 "TextFieldKB1119.zip" http://vdisk.weibo.com/s/Et2R_
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS TextField 遮住