键入时显示下拉菜单

时间:2014-02-06 01:35:41

标签: ios uitableview uiscrollview uitextfield

我有一个UITextField,我想创建一些类似于ios联系人应用程序中的下拉菜单。

当用户开始输入时,我希望菜单下拉。它实际上并不需要根据名称来限制它显示的数据,但如果可以的话它会很好(例如:如果用户键入“m”它只显示以m开头的字符串,依此类推)。如果用户选择一个,则该类型将被发送到将显示它的UITextField。如果有这样的开源选择器,它会很棒。如果没有,是否有办法提供包含数组中所有项目的内容。这不一定非常复杂,它不必限制用户输入或显示的数据。

1 个答案:

答案 0 :(得分:2)

基于this链接的回复。将向您展示如何在自动完成的下拉列表中获取URL值。

  1. 您需要具有可能的自动完成值的NSMutableArray。在这个例子中,我们将使用pastURL的NSMutableArray,每次用户浏览URL时我们都会将它添加到数组中。
  2. 您需要创建一个UITable来显示值

     autocompleteTableView = [[UITableView alloc] initWithFrame:
     CGRectMake(0, 80, 320, 120) style:UITableViewStylePlain];
     autocompleteTableView.delegate = self;
     autocompleteTableView.dataSource = self;
     autocompleteTableView.scrollEnabled = YES;
     autocompleteTableView.hidden = YES;  
     [self.view addSubview:autocompleteTableView];
    
  3. 您需要在编辑字段时显示表格

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
         autocompleteTableView.hidden = NO;
    
         NSString *substring = [NSString stringWithString:textField.text];
         substring = [substring stringByReplacingCharactersInRange:range withString:string];
         [self searchAutocompleteEntriesWithSubstring:substring];
         return YES;
    }
    
  4. 最后只显示正在编辑的表中的内容

     -(void)searchAutocompleteEntriesWithSubstring:(NSString *)substring {
    
         // Put anything that starts with this substring into the autocompleteUrls array
    
         // The items in this array is what will show up in the table view
    
         [autocompleteUrls removeAllObjects];
    
         for(NSString *curString in pastUrls)  {
              NSRange substringRange = [curString rangeOfString:substring];
              if (substringRange.location == 0) {
                   [autocompleteUrls addObject:curString]; 
              }
         }
              [autocompleteTableView reloadData];
      }
    
  5. 不要忘记将适当的UITable和UITextfield代理添加到.h文件中。