2011-01-25 3 views
0

누구든지이 방법을 작동시키는 방법을 설명 할 수 있습니까? 그들은 잘 컴파일하지만 아무 것도하지 않습니다.키보드를 수용하도록 UITableView를 위로 스크롤하려면 어떻게합니까?

필자의 테이블 뷰 스크롤을 사용하여 키보드가 잘 맞도록하고 싶습니다.

이 문제에 대한 해결책은 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에서 가져 왔습니다. 벤 copsey의 ASIHTTPRequest 랩퍼의 onDialog 클래스. 희망이 도움이됩니다.

관련 문제