【发布时间】:2011-11-13 07:15:18
【问题描述】:
我创建了以下代码,但仍有一件事困扰着我。出于某种原因,当我按下键盘上的任何键时,它会立即消失,我的取消栏被禁用,但代码可以正常工作,并且它可以正确排序并显示我的表格视图中包含用户输入的字母的单元格,虽然一次只有一个。有什么我想念的吗?谢谢。
编辑:
这是我正在使用的一些代码。可能有助于解决这个问题。
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
return [self headerView];
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return [[self headerView] frame].size.height;
}
- (UIView *)headerView
{
if (headerView)
return headerView;
float w = [[UIScreen mainScreen] bounds].size.width;
CGRect evHeaderFrame = CGRectMake(0.0, 0.0, w, 45.0);
theSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 45)];
theSearchBar.showsCancelButton=YES;
theSearchBar.autocorrectionType=UITextAutocorrectionTypeNo;
theSearchBar.autocapitalizationType=UITextAutocapitalizationTypeNone;
theSearchBar.delegate = self;
headerView = [[UIView alloc] initWithFrame:evHeaderFrame];
[headerView addSubview:theSearchBar];
searching = NO;
return headerView;
[headerView release];
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar {
if(searching)
return;
searching = YES;
NSLog(@"Search Bar Text Did Begin Editing");
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
NSLog(@"Did End Editing");
}
- (void)searchBar:(UISearchBar *)theSearchBar textDidChange:(NSString *)searchText {
[copyListOfItems removeAllObjects];
if([searchText length] > 0) {
NSLog(@"Search Length is greater than 0");
searching = YES;
self.tableView.scrollEnabled = YES;
[self searchTableView];
}
else {
NSLog(@"Search Length is less than 1");
searching = NO;
self.tableView.scrollEnabled = YES;
}
[self.tableView reloadData];
}
- (void) searchBarSearchButtonClicked:(UISearchBar *)theSearchBar {
[self searchTableView];
}
- (void) searchTableView {
NSString *searchText = theSearchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
for (int i = 0; i < [customArray count]; i++){
NSRange titleResultsRange = [[[customArray objectAtIndex:i] objectAtIndex:0] rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
//NSLog(@"%@ , %@",searchText,[customArray objectAtIndex:i]);
[copyListOfItems addObject:[customArray objectAtIndex:i]];
}
//NSLog(@"CopyListOfItems : %@",copyListOfItems);
[searchArray release];
searchArray = nil;
}
- (void) doneSearching_Clicked:(id)sender {
theSearchBar.text = @"";
NSLog(@"RESIGN FIRST RESPONDER");
[theSearchBar resignFirstResponder];
searching = NO;
self.navigationItem.rightBarButtonItem = nil;
self.tableView.scrollEnabled = YES;
[self.tableView reloadData];
}
看起来问题出在 [self.tableView reloadData]; 上。看来我得想办法把搜索栏放到屏幕上了。
【问题讨论】:
标签: objective-c keyboard uisearchbar