2011-05-27 61 views
0

我按照蘋果的指導Managing keyboard滾動到新的文本框選擇一個新的文本框

它的工作原理就像一個魅力,除非你已經在一個新的文本字段一個文本框和標籤書寫時。

這是在示例中的功能,負責滾動。但它永遠不會被稱爲,因爲它已經上漲了?

- (void)keyboardWasShown:(NSNotification*)aNotification; 

任何人都知道這個問題的一個很好的解決方案?

回答

1

在.H

CGSize keyboardSize; 

- (void)keyboardWasShown:(NSNotification*)aNotification; 

在.M

- (void)keyboardWasShown:(NSNotification*)aNotification { 
    NSDictionary* info = [aNotification userInfo]; 
    if (info) { 
      /* Can get keyboard Size */ 
      keyboardSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] 
    } 

    /* Animation code */ 

} 

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    activeField = textField; 
    [self keyboardWasShown:[NSNotification notificationWithName:UIKeyboardDidShowNotification object:nil]]; 
} 

感謝vakio。

1

接口:

CGSize keyboardSize; 
BOOL keyboardIsVisible; 

實施,keyboardWasShown:

keyboardSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
keyboardIsVisible = YES; 
// Move ScrollView 

keyboardWillBeHidden:

keyboardIsVisible = NO; 

textFieldDidBeginEditing:

if (keyboardIsVisible) { 
    // Move ScrollView 
} 
+0

這只是常識。正如你可以在蘋果例子中看到的那樣,它已經在監聽了。所以問題是我如何執行從textFieldDidBeginEditing移動鍵盤的代碼? – David 2011-05-27 12:29:32

+0

那麼,你可以簡單地調用UIScrollView的'setContentOffset:'或' - (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated'並輸入文本框的矩形。 (因爲你知道鍵盤的大小,所以你可以將它存儲起來並在'textFieldDidBeginEditing:'中使用它,儘管你不需要知道鍵盤的大小。 – vakio 2011-05-27 12:33:23

+0

keyboardWasShown函數的關鍵是我可以計算出我想要看到的矩形,以及我希望通過知道鍵盤的大小來使其可視的位置。 – David 2011-05-27 12:38:38