我有一个UISearchdisplayController,它在tableview中显示结果.当我尝试滚动tableview时,contentsize正好是_keyboardHeight比它应该更高.这导致错误的底部偏移.有> tableview中有50个项目,因此下面不应该有空格
解决方法
我通过添加NSNotificationCenter侦听器解决了这个问题
- (void)searchdisplayController:(UISearchdisplayController *)controller willShowSearchResultsTableView:(UITableView *)tableView { //this is to handle strange tableview scroll offsets when scrolling the search results [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil]; }
别忘了删除监听器
- (void)searchdisplayController:(UISearchdisplayController *)controller willHideSearchResultsTableView:(UITableView *)tableView { [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil]; }
- (void)keyboardDidHide:(NSNotification *)notification { if (!self.searchdisplayController.active) { return; } NSDictionary *info = [notification userInfo]; NSValue *avalue = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; CGSize KeyboardSize = [avalue CGRectValue].size; CGFloat _keyboardHeight; UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; if (UIDeviceOrientationIsLandscape(orientation)) { _keyboardHeight = KeyboardSize.width; } else { _keyboardHeight = KeyboardSize.height; } UITableView *tv = self.searchdisplayController.searchResultsTableView; CGSize s = tv.contentSize; s.height -= _keyboardHeight; tv.contentSize = s; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。