2011-05-20 24 views
1

我試圖調整滾動視圖,當用戶點擊鍵盤的「下一步」按鈕。棘手的部分是我以編程方式生成自定義表格單元格。每個單元格都有一個文本字段。它看起來是這樣的:ScrollViews,鍵盤,隱藏文本字段和編程式繪製自定義表單元格

https://img.skitch.com/20110520-n8k7cm224mtfdc2wsgpjpmghke.jpg

我試過內容從鍵盤背後的動人以下Apple's instructions,但我發現它並不完全工作這種情況下,主要是因爲UIKeyboardDidShowNotification只調用一次,而不是每次點擊「下一步」按鈕。

我的解決方案是重新連接蘋果的例子,使用UIKeyboardDidShowNotification存儲鍵盤高度和textFieldDidBeginEditing來處理滾動視圖調整。

下面是我(嘗試)來調整滾動視圖:

- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    activeField = textField; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbHeight, 0.0); 

    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 

    CGRect aRect = self.view.frame; 
    aRect.size.height -= kbHeight; 

    if (!CGRectContainsPoint(aRect, activeField.frame.origin)) { 
     CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbHeight); 
     [scrollView setContentOffset:scrollPoint animated:YES]; 
    } 
} 

在此功能中,如果塊永遠不會觸發。我使用了兩個NSLog語句來查找每個activeField實例報告相同的原點(儘管在應用程序運行時不共享可見的原點)。

我知道activeField變量是正確更新的,因爲我將它轉儲到日誌中,並且每次調用此函數時字段的標記都不相同。

所以,我的問題 - 我認爲 - 是:我如何獲得以編程方式生成的自定義表格單元格包含文本字段以具有正確的來源?

+1

tableView是一個scrollview,我認爲你不應該通過在scrollView中包裝tableView來引入一個新的複雜程度。要讓TableView滾動到一個certein單元格,你可以使用:'scrollToRowAtIndexPath:atScrollPosition:animated:'。如果鍵盤隱藏了需要滾動到底的行,只需減小tableView的高度即可。您可以在委託調用和通知傳遞的userInfo字典中獲取鍵盤的框架。 – 2011-05-20 06:31:36

+0

明白了!你應該重新發布這個答案,以便我可以給予適當的獎勵。謝謝您的幫助! – jeffmueller 2011-05-20 18:42:37

+0

非常好,在這裏你與一個單獨的答案:) – 2011-05-20 19:31:01

回答

2

tableView是一個scrollview,我認爲你不應該通過在scrollView中包裝tableView來引入新的複雜程度。

要使TableView滾動到您可以使用的certein單元:scrollToRowAtIndexPath:atScrollPosition:animated:

如果鍵盤隱藏了需要滾動到底的行,只需減小tableView的高度即可。您可以在委託調用和通知傳遞的userInfo字典中獲取鍵盤的框架。

0

子視圖的frame根據其超級視圖設置。因此,在每個單元格中,textField位於相同的位置。因此,您的每個文本字段都具有相同的來源。你想要的是細胞的框架。假設該單元格是textField的父級。你可以這樣做activeField.superview.frame而不是activeField.frame

+0

謝謝你!這是非常有用的知道。事實證明,我不得不上升兩級(activeField.superview.superview.frame)。然而,即使在獲得正確的幀起源之後,CGRectContainsPoint仍然返回true。 – jeffmueller 2011-05-20 18:40:31

相關問題