2016-11-15 28 views
2

キーボードが表示されたときにいくつかのUIコンポーネントが下から隠れています。実際にはtableView's最後の行です。キーボードが表示されたときにスクロールテーブルビューの行が表示されるiOS

私はNSNotificationCenterを使用して、キーボードが表示されて消えたら通知します。

は、ここに私のコードです:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardOnScreen:) name:UIKeyboardDidShowNotification object:nil]; 

-(void)keyboardOnScreen:(NSNotification*)notification{ 
    NSDictionary* info = [notification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
    CGRect screen = self.view.frame;   
    screen.size.height -= kbSize.height; 
    float HeightOfToolbar =_inputbar.frame.size.height; //TOOLBAR 
    float yPoint = screen.size.height-HeightOfToolbar; 
    CGPoint scrollPt = CGPointMake(0, yPoint); 
    [_dataTable setContentOffset:scrollPt animated:YES]; 
} 

ただし、テーブルビューのスクロールアップではなく、すなわち、キーボード上の最後の行正しい行で。 最後の行を隠す最後の2行目以上にスクロールすることがあります。 そのscrollPt値に関連しています!

+0

使用 'あなたはそれでいいと感じた場合tpkeyboardavoidingscrollview' libが表示されます。 – vaibhav

+0

@vaibhavはとても難しいです。私はtpkeyboardavoidingscrollviewを使うべきですか? –

+0

私は以前のコメントではどこの言葉にも言及しなかった。 – vaibhav

答えて

0

は、このメソッドを使用キーボードは

- (void)keyboardWasShown:(NSNotification *)aNotification { 
     NSDictionary* info = [aNotification userInfo]; 
     CGSize Size = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

     UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, Size.height - HeightOfToolbar, 0.0);//Set height according to key board height 
     self.tableView.contentInset = contentInsets; 
     self.tableView.scrollIndicatorInsets = contentInsets; 
     [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
     } 

を隠すキーボードに

- (void)keyboardWasHidden:(NSNotification *)aNotification 
    { 

    self.tableView.contentInset = UIEdgeInsetsZero; 
    self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero; 
    } 
+0

keyboardWasHiddenの実行後にキーボードを却下するたびに、keyboardWasShownが呼び出されます! –

+0

スクロールデリゲートメソッドを使用しましたか? –

+0

はい.. scrollViewDidScrollとscrollViewDidScrollToTop –

関連する問題