iOS軟鍵盤遮擋UITableView內文字框問題

來源:互聯網
上載者:User

iOS軟鍵盤遮擋UITableView內文字框問題

1、註冊
UIKeyboardDidShowNotification/UIKeyboardDidHideNotification通知。

-(id) initWithNibName:(NSString*)nibNameOrNil bundle:nibBundleOrNil {    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {        // 寫在這裡,或者viewDidLoad        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShown:) name:UIKeyboardDidShowNotification object:nil];        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHidden:) name:UIKeyboardDidHideNotification object:nil];    }    return self;}-(void) dealloc {    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil];}

2、當通知到來,調整frame。

-(void) keyboardShown:(NSNotification*) notification {    _initialTVHeight = _tableView.frame.size.height;    CGRect initialFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];    CGRect convertedFrame = [self.view convertRect:initialFrame fromView:nil];    CGRect tvFrame = _tableView.frame;    tvFrame.size.height = convertedFrame.origin.y;    _tableView.frame = tvFrame;}-(void) keyboardHidden:(NSNotification*) notification {    CGRect tvFrame = _tableView.frame;    tvFrame.size.height = _initialTVHeight;    [UIView beginAnimations:@TableViewDown context:NULL];    [UIView setAnimationDuration:0.3f];    _tableView.frame = tvFrame;    [UIView commitAnimations];}

3、觸發文字框,滾動tableView
-(void) textFieldDidBeginEditing:(UITextField *)textField {
NSIndexPath* path = [NSIndexPath indexPathForRow:row inSection:section];
[self performSelector:@selector(scrollToCell:) withObject:path afterDelay:0.5f];
}
-(void) scrollToCell:(NSIndexPath*) path {
[_tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionNone animated:YES];
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.