2016-12-28 15 views
1

UITableViewCellにテキストフィールドが含まれているテーブルビューがあります。ユーザーがテキストフィールドとキーボードをタップすると、適切なコンテンツを挿入した後、タップした行にスクロールします。UITableViewスクロールと共にUIViewをスクロールする

今、UIViewをテーブルビューの上に表示して、テーブルをスクロールするときにそれに合わせて調整する必要があります。

これを行うには、以下のようにscrollViewDidScroll:メソッドを実装しました。これは特定の状況では機能しますが、一部の状況では機能しないか、ランダムな結果が得られません。私はここで何か間違っていますか?

- (void)scrollViewDidScroll:(UIScrollView *)iScrollView { 
    if (self.hollowView) { 
     CGPoint offset = iScrollView.contentOffset; 
     CGRect hollowViewFrame = self.hollowView.hollowFrame; 
     hollowViewFrame.origin.y += self.previousOffset - offset.y; 
     self.previousOffset = offset.y; 
     [self.hollowView resetToFrame:hollowViewFrame]; 
    } 
} 

- (void)keyboardDidHide:(NSNotification *)iNotification { 
    self.previousOffset = 0.0; 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil]; 
} 
+1

IQKeyboardManager'は、キーボードを管理 '使用してみてください。 – kai

+0

'autoLayout'を使用している場合は、フレームを操作してビューの位置を変更しないでください。 – Rikh

+0

テーブルビューとともにビューをスクロールする場合は、tableViewheaderを使用してください。あなたのビューをtableViewHeaderに入れて、テーブルがスクロールするときにビューがtableViewに沿ってスクロールします。 –

答えて

0

これはiosのスクロールテーブルに使用できます。あなたは同時に両方のビューをスクロールしたい場合は

-(void)keyboardWillShow:(NSNotification *)notification 
{ 

    NSDictionary* keyboardInfo = [notification userInfo]; 
    NSValue* keyboardFrameBegin =[keyboardInfovalueForKey:UIKeyboardFrameEndUserInfoKey]; 
    keyBoardHeight = keyboardFrameBegin.CGRectValue.size.height; 
    vwSendBottomSpaceContraint.constant = keyBoardHeight 
    [self performSelector:@selector(scrollToBottomAnimated) withObject:nil afterDelay:0.1]; 

} 

-(void)keyboardWillHide:(NSNotification*)notification 
{ 

     vwSendBottomSpaceContraint.constant = 0; 
     [self performSelector:@selector(scrollToBottomAnimated) withObject:nil afterDelay:0.1]; 

} 

-(void)scrollToBottomAnimated 
{ 

     NSInteger rows = [tableview numberOfRowsInSection:0]; 

     if(rows > 0) 
     { 
     [tableview scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:rows - 1 inSection:0]       atScrollPosition:UITableViewScrollPositionBottomanimated:YES];  
     } 

} 
+0

いいえ、私はキーボードが現れたときにテーブルをスクロールしません。これは私がすでにやっています。私はスクロールしたいテーブルビューの上に別の空のビューを持っています。 – Abhinav

0

は、あなたは同じサイズでちょうどそれらにオフセットscrollviewのコンテンツを設定する方法は次の両方のビューを取る必要があります。それは無愛想

enter code here - (void)scrollViewDidScroll:(UIScrollView *)iScrollView { 
if (self.scrollView) // Check for the scrolled view 
{ 
    // Set the Tableview offset directly 
    tableview.contentOffset = iScrollView.contentOffset 
} 
else { 
    //Set view scroll as per tableview scroll 
     view.contentOffset = iScrollView.contentOffset } } 

//注動作します: - 確かビューはscrollviewタイプでなければなりませんしてくださいまたはビューが怖がって取得または黒い画面が表示されている場合

おかげで..

0

だから、この作品は、同じような状況に苦しんでいる人のために私のために働い:

- (void)scrollViewDidScroll:(UIScrollView *)iScrollView { 
    if (self.hollowView) { 
     CGRect frame = [self.tableView rectForRowAtIndexPath:self.expandedCellIndexPath]; 
     frame.origin.y -= self.tableView.contentOffset.y; 
     [self.hollowView resetToFrame:frame]; 
    } 
} 
関連する問題