关于页面有多个textfield点击换行,画面随之移动的方案

来源:互联网 发布:52所 杭州知乎 编辑:程序博客网 时间:2024/06/14 21:03

如果一个页面上有多个textfield,点击换行,让画面随之滚动,苹果给出了一个比较好的解决方案

Text, Web, and Editing Programming Guide for iOS


主要代码:

// Call this method somewhere in your view controller setup code.- (void)registerForKeyboardNotifications{    [[NSNotificationCenter defaultCenter] addObserver:self            selector:@selector(keyboardWasShown:)            name:UIKeyboardDidShowNotification object:nil];    [[NSNotificationCenter defaultCenter] addObserver:self             selector:@selector(keyboardWillBeHidden:)             name:UIKeyboardWillHideNotification object:nil]; } // Called when the UIKeyboardDidShowNotification is sent.- (void)keyboardWasShown:(NSNotification*)aNotification{    NSDictionary* info = [aNotification userInfo];    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;     UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);    scrollView.contentInset = contentInsets;    scrollView.scrollIndicatorInsets = contentInsets;     // If active text field is hidden by keyboard, scroll it so it's visible    // Your application might not need or want this behavior.    CGRect aRect = self.view.frame;    aRect.size.height -= kbSize.height;    if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {        CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbSize.height);        [scrollView setContentOffset:scrollPoint animated:YES];    }} // Called when the UIKeyboardWillHideNotification is sent- (void)keyboardWillBeHidden:(NSNotification*)aNotification{    UIEdgeInsets contentInsets = UIEdgeInsetsZero;    scrollView.contentInset = contentInsets;    scrollView.scrollIndicatorInsets = contentInsets;}
- (void)textFieldDidBeginEditing:(UITextField *)textField{    activeField = textField;} - (void)textFieldDidEndEditing:(UITextField *)textField{    activeField = nil;}


原创粉丝点击