1

我遇到了一个大问题。我有一个textfield我正在做的自动完成功能,可以在点击里面时显示项目列表。我在tableView(自动完成表视图)中显示项目。我有一个UIbutton下面textfield。现在,当我从自动完成文本字段中选择一个项目并单击它没有响应的按钮时。我不知道为什么。

我把它放在前面,didendediting也放在前面,didSelectrow但没有用。我添加了一个UIbuttonScrollView(testScroll)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
           Name.text = selectedCell.textLabel.text;
           [Name resignFirstResponder];
           [testScroll bringSubviewToFront:btnSearch];
           autocompleteTableView.hidden=true;
}
-(void)textFieldDidEndEditing:(UITextField *)textField{
 if(textField==CompanyName)
    {

        [testScroll bringSubviewToFront:btnSearch];

}

}

我要去哪里错了?

编辑:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {



    if(textField==Name)
    {

        autocompleteTableView.hidden = NO;

        NSString *substring = [NSString stringWithString:textField.text];
        substring = [substring stringByReplacingCharactersInRange:range withString:string];
        [self searchAutocompleteEntriesWithSubstring:substring];
        return YES;
        if([Name.text length]==0)
        {
            autocompleteTableView.hidden = YES;

        }
    }



}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

        parser = [[NSXMLParser alloc] initWithData:receivedData];
        [parser setDelegate:self];
        [parser setShouldProcessNamespaces:NO];
        [parser setShouldReportNamespacePrefixes:NO];
        [parser setShouldResolveExternalEntities:NO];
        [parser parse];
        [parser release];



        if([arr4 count]!=0)
        {
            self.autocompleteUrls = [[[NSMutableArray alloc] init]autorelease];
            viewForautoCompleteTableView = [[UIView alloc]initWithFrame:CGRectMake(220, 370, 295, 230)];



            if(autocompleteTableView)
                [autocompleteTableView removeFromSuperview];

            autocompleteTableView = [[UITableView alloc] initWithFrame:CGRectMake(0,0,295,150) style:UITableViewStyleGrouped];
            autocompleteTableView.delegate = self;
            autocompleteTableView.dataSource = self;
            autocompleteTableView.scrollEnabled = YES;
            autocompleteTableView.backgroundColor = [UIColor lightTextColor];
            autocompleteTableView.rowHeight=28;

            autocompleteTableView.backgroundView = nil;
            autocompleteTableView.backgroundColor = [UIColor whiteColor];


            autocompleteTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
            [autocompleteTableView setSeparatorColor:[UIColor orangeColor]];
            [viewForautoCompleteTableView setFrame:CGRectMake(220,370 ,295,autocompleteTableView.frame.size.height)];


            [viewForautoCompleteTableView addSubview:autocompleteTableView];
            [self.view addSubview:viewForautoCompleteTableView];

            [autocompleteUrls removeAllObjects];
            for(int i=0;i<[arr4 count];i++)
            {
             NSString *curString = [NSString stringWithFormat:@"%@ %@",[[arr4 objectAtIndex:i] valueForKey:@"Name"],[[arr4 objectAtIndex:i]valueForKey:@"LastName"]];

                [autocompleteUrls addObject:curString];

            }




        }
        [autocompleteTableView reloadData];


}
4

1 回答 1

2

我遇到了同样的问题,并在下面的代码的帮助下修复了。

编辑以下两个功能:

in .h:

 int isValueSelected;

以 .m 为单位:

在 viewDidLoad: isValueSelected =0;

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

        if (isValueSelected == 1)
        {
            autocompleteTableView.hidden = YES;
            isValueSelected = 0;
        }else{
            NSString *substring = [NSString stringWithString:textField.text];
            substring = [substring stringByReplacingCharactersInRange:range withString:string];
            [self searchAutocompleteEntriesWithSubstring:substring];
            if((substring.length ==0) || ([substring characterAtIndex:0] == 10) || (autocompleteUrls.count == 0)){
                autocompleteTableView.hidden = YES;
            }else{
                autocompleteTableView.hidden = NO;
            }


        }

        return YES;
    }


    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

        UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
        urlField.text = selectedCell.textLabel.text;
        isValueSelected = 1;
        autocompleteTableView.hidden = YES;

    }
于 2013-02-28T06:35:13.887 回答