2010-05-11 103 views
0

我明白這個問題非常常見,而且我已經閱讀了很多答案,但無法理解代碼是如何工作的。這工作:iPhone在鍵盤打開時向上滾動視圖

-(void)textFieldDidBeginEditing:(UITextField *)sender 
{ 
if ([sender isEqual:txtLeaveAddyLine1]) 
{ 
    //move the main view, so that the keyboard does not hide it. 
    if (self.view.frame.origin.y >= 0) 
    { 
     [self setViewMovedUp:YES]; 
    } 
} 
} 

在這個例子中,txtLeaveAddy是由鍵盤隱藏在第一個的UITextField,它就像一個魅力。當我循環瀏覽屏幕上的文本字段時,它會在用戶進入txtLeaveAddyLine1字段時向上滾動。但是,當我嘗試添加txtLeaveAddyLine1字段下面的字段時 - 沒有任何反應。例如:

-(void)textFieldDidBeginEditing:(UITextField *)sender 
{ 
    if ([sender isEqual:txtLeaveAddyLine1]) 
    { 
     //move the main view, so that the keyboard does not hide it. 
     if (self.view.frame.origin.y >= 0) 
     { 
      [self setViewMovedUp:YES]; 
     } 
    } 
    if ([sender isEqual:txtLeaveAddyLine2]) 
    { 
     //move the main view, so that the keyboard does not hide it. 
     if (self.view.frame.origin.y >= 0) 
     { 
      [self setViewMovedUp:YES]; 
     } 
    } 
} 

我沒有正確使用此功能?

回答

0

setViewMovedUp不是內置的 - 我認爲蘋果示例中的代碼。 (如果您的版本與我發現的版本不同,以下內容可能不適用...)

它不會奇蹟般地移動到正確的位置,它只會將視圖移動一個固定的量。我想你需要看看這個函數,並計算出需要移動每個域的視圖的距離,然後修改視圖以根據域的位置來改變視圖的移動量。無論是通過選擇案例語句將簡單的東西硬連接起來,還是傳入發件人並查看其框架以確定將視圖移到哪裏。

+0

見下文剝奪自己的答案 - 似乎完美地覆蓋它。 – Andiih 2010-05-12 08:40:21

2

執行此操作的常見方法是在表格視圖中顯示文本字段。當文本字段開始編輯,獲得該指數路徑細胞是在和撥打:

[tableView scrollToRowAtIndexPath:indexPath 
       atScrollPosition:UITableViewScrollPositionMiddle 
         animated:YES]; 
+0

如何在表格視圖中設置UITextFields和標籤?每次我嘗試在文字視圖上放置文本字段或標籤時,都非常困難 - 它不希望允許我將它放在特定位置。 – startuprob 2010-05-11 22:52:58

+0

使用標籤和文本字段創建自定義UITableViewCell。然後使用該單元格填充表格。 – 2010-05-12 21:21:44

相關問題