2011-01-25 21 views
0

任何人都可以解釋如何讓這些方法工作? 他們編譯得很好,但他們什麼都不做。如何讓UITableView向上滾動以容納鍵盤?

我想讓我的tableView滾動,這樣我的鍵盤很適合。

針對此問題發佈的解決方案是重置contentSizes並訂閱NSNotfication。這三種方法看起來像他們應該做我想要的,但沒有任何反應。

[self.myTable setContentOffset:CGPointMake(0, -100) animated:YES]; 

[self.myTable selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionTop]; 

[self.myTable scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES]; 

回答

0

您可以使用setFrame做出的UITableView的大小屏幕尺寸的一半。

3

您發佈的代碼是相當不完整的,以調試您做錯了什麼,因爲它只存在一些需要的部分。請查看這是否是您正在尋找的解決方案?

在你init方法中添加以下內容:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; 

在實現加入這個(也增加了頭文件):

- (void)keyboardWillShow:(NSNotification *)notification { 
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { 
#endif 
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2 
     NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey]; 
#else 
     NSValue *keyboardBoundsValue = [[notification userInfo] objectForKey:UIKeyboardBoundsUserInfoKey]; 
#endif 
     CGRect keyboardBounds; 
     [keyboardBoundsValue getValue:&keyboardBounds]; 
     UIEdgeInsets e = UIEdgeInsetsMake(0, 0, keyboardBounds.size.height, 0); 
     [[self tableView] setScrollIndicatorInsets:e]; 
     [[self tableView] setContentInset:e]; 
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2 
    } 
#endif 
} 

最後,在你的dealloc方法,添加:

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; 

此代碼來自ASIAuthenticati來自Ben Copsey的ASIHTTPRequest包裝的onDialog類。希望能幫助到你。

相關問題