2011-08-20 53 views
1

我想縮小我的UITextView的大小(至221像素),當鍵盤出現時,並恢復到正常高度(337像素)時,鍵盤消失,所以我這樣做:試圖設置高度的UITextView

- (void)keyboardWasShown:(NSNotification*)aNotification { 
    NSDictionary* info = [aNotification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
    CGRect bkgndRect = inkTextField.superview.frame; 
    bkgndRect.size.height += kbSize.height; 
    [inkTextField.superview setFrame:bkgndRect]; 
    [inkScroller setContentOffset:CGPointMake(0.0, inkTextField.frame.origin.y-kbSize.height) animated:YES]; 
    inkTextField.frame=CGRectMake(1, -5, 285, 221); 
} 

// Called when the UIKeyboardWillHideNotification is sent 
- (void)keyboardWillBeHidden:(NSNotification*)aNotification 
{ 
    UIEdgeInsets contentInsets = UIEdgeInsetsZero; 
    inkScroller.contentInset = contentInsets; 
    inkScroller.scrollIndicatorInsets = contentInsets; 
    inkTextField.frame=CGRectMake(1, -5, 285, 337); 
} 

但這不起作用。它只是使用XIB文件中定義的高度。

+0

我不會要做到這一點了原來的想法工作的地方,它只是應該滾動,因爲我輸入,以便我的文本不隱藏在鍵盤後面。但是,當我輸入時,它不會精確地向上滾動。它像3條線一樣落後。我從蘋果公司得到了這段代碼,但只是添加了inkTextField.frame = CGRectMake ...因爲原始文件沒有工作 – bitmoe

回答

2

確定您的代碼看起來不錯,您是否檢查過代碼是否使用NSLog運行?如果是這樣,然後下面有一個簡單的方法的情況:你的TextView

IBActions
- (IBAction)editBegan:(id)sender; 
- (IBAction)editEnded:(id)sender; 

連接: 創建於IBActions。一個與連接editingDidBegin,另一個與editingDidEnd和您的m簡單地把你的代碼到每個IBAction(代碼爲keyboardWasShow n爲進editBegankeyboardWasDismissed代碼爲editEnded

+0

keyboardWasShown有一個(NSNotification *)a需要的通知變量 - 我如何使用這些新方法獲取該變量?並且我將文本視圖連接到了什麼?我定義了兩種方法並實現了它們,但我不知道如何連接它們。我在xib中看到的所有內容都是Outlets,參考出口,參考出口集合和已收到操作,並且它們都不會給我editBegan或editEnded – bitmoe

+0

您應該將IBActions添加到文件所有者類文件。它們是與你的筆尖同名的類文件。如果你這樣做了,你應該看到IBActions,如果你右鍵單擊你的筆尖的文件所有者oject。還要檢查你是否正在運行,添加一個NSLog(@「message」);進入每個實施。如果這些消息出現在調試控制檯中,那麼您的代碼正在運行。 – JonasG