先上代码:
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor redColor];
UIScrollView *scrollview = [[UIScrollView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:scrollview];
scrollview.scrollEnabled = YES;
scrollview.contentSize = CGSizeMake(self.view.frame.size.width , self.view.frame.size.height);
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 300, 200, 200)];
textField.backgroundColor = [UIColor whiteColor];
textField.font = [UIFont systemFontOfSize:18];
textField.layer.cornerRadius = 3.0;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
[scrollview addSubview:textField];
_scrollView = scrollview;
//监听键盘
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(visiblekeybordAction:)
name:UIKeyboardDidShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(hidekeybordAction:)
name:UIKeyboardWillHideNotification
object:nil];
}
-(void)visiblekeybordAction:(id)sender
{
CGRect keyboardFrame;
[[[((NSNotification *)sender) userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardFrame];
_scrollView.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height - keyboardFrame.size.height) ;
}
-(void)hidekeybordAction:(id)sender
{
_scrollView.frame = self.view.bounds ;
}
上述代码中,ios7以后,无论textfield多靠下,系统都会自动将textfield移动到可视区域,ios6及以下,textfield仍然不可见,需要向上滑动才能可见