【问题标题】:Add a drop down suggestion below a UISearchbar and UITextfields在 UISearchbar 和 UITextfields 下方添加下拉建议
【发布时间】:2015-07-01 02:55:17
【问题描述】:

在我的 ios 应用程序中,有 3 个单独的文本输入字段。一个在搜索栏中,两个在 UIAlertview(有两个输入字段)。我需要在可以向用户提供建议的字段下方提供一个下拉菜单。我有一个数组中需要的数据(所有 3 个字段都需要相同的数组来提供建议)。我该怎么做?我是否应该以编程方式创建一个 UITableView,它会出现在所有 TextFields 下方(带有最基本的单元格,包含一个文本字段)?如果是这样,我怎样才能得到正确的框架?否则,我应该参考什么其他方法?

【问题讨论】:

    标签: ios xcode uitableview uiview uisearchbar


    【解决方案1】:

    这是一个简单的例子。在这里,我正在使用一个 UITextField。当它成为第一响应者时,我正在显示下拉列表,即 UITableView 。当从表格视图中选择一个对象时,下拉列表将折叠。

    - (void)viewDidLoad
    {
       [super viewDidLoad];
       // Do any additional setup after loading the view, typically from a nib.
    
    
       mutArr=[[NSMutableArray alloc]init];
       [mutArr addObject:@"object1"];
       [mutArr addObject:@"object2"];
       [mutArr addObject:@"object3"];
       [mutArr addObject:@"object4"];
       [mutArr addObject:@"object5"];
       [mutArr addObject:@"object6"];
       [mutArr addObject:@"object7"];
       [mutArr addObject:@"object8"];
    
    
       txtList1=[[UITextField alloc]init];
       [txtList1 setFrame:CGRectMake(30, 100, 260, 30)];
       [txtList1 setTag:100];
       [txtList1 setDelegate:self];
       [txtList1 setBackgroundColor:[UIColor brownColor]];
       [txtList1 setTextColor:[UIColor whiteColor]];
       [self.view addSubview:txtList1];
    
       tblList=[[UITableView alloc]init];
       [tblList setDelegate:self];
       [tblList setDataSource:self];
       [self.view addSubview:tblList];
    
    }
    
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
       return mutArr.count;
    }
    
    
      -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
     {
    
       UITableViewCell *cell=[[UITableViewCell alloc]init];
       [cell setBackgroundColor:[UIColor grayColor]];
       cell.textLabel.textColor=[UIColor whiteColor];
       cell.textLabel.text=[mutArr objectAtIndex:indexPath.row];
    
       return cell;
    
     }
    
    
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
       UITableViewCell *cell=[tblList cellForRowAtIndexPath:indexPath];
       txtList1.text=cell.textLabel.text;
    
       [txtList1 resignFirstResponder];
       [self collapseTableView];
    
    
    }
    
    
    - (void)textFieldDidBeginEditing:(UITextField *)textField
    {
       [textField resignFirstResponder];
    
       if (textField.tag==100)
       {
           CGRect rect=tblList.frame;
           if (rect.size.height==0)
           {
              [self expandTableView];
    
           }
       }
    
    }
    
    
    -(void)collapseTableView
    {
    
       [tblList setFrame:CGRectMake(30, 130, 260, 120)];
       [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionTransitionNone
                     animations:^{
    
           [tblList setFrame:CGRectMake(30, 130, 260, 0)];
    
        }
       completion:^(BOOL finished)
        {
           NSLog(@"comleted");
        }];
    
    }
    
    -(void)expandTableView
    {
       [tblList setFrame:CGRectMake(30, 130, 260, 0)];
       [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationOptionTransitionNone
                     animations:^{
    
          [tblList setFrame:CGRectMake(30, 130, 260, 200)];
    
        }
        completion:^(BOOL finished)
        {
           NSLog(@"comleted");
        }];
    
    }
    

    【讨论】:

    • 对我来说仍然存在一个主要问题.. UIAlertView 中的 UITextField 不调用方法 - (void)textFieldDidBeginEditing:(UITextField *)textField
    • 您需要在 UIAlertView 中显示所有内容吗??您如何将 textFields 添加到 AlertView..??
    猜你喜欢
    • 1970-01-01
    • 2017-12-11
    • 2016-10-19
    • 1970-01-01
    • 2020-03-27
    • 2012-09-22
    • 2019-11-13
    • 1970-01-01
    • 2022-11-17
    相关资源
    最近更新 更多