我是IOS的新手。
我希望在Facebook上实现类似于Google地方自动填充的功能。每次按键时,适当的数据会立即填充。我编写了一个函数,根据我的UITextField中的值填充数据。但是一旦用户点击“返回”键就会发生这种情况。 (因为我在“textFieldDidEndEditing”委托方法上调用了这个函数)。因此,我需要帮助知道调用我的函数的位置(哪个委托方法)根据我的UITextField中的文本更改立即填充相应的UITableView数据。
- (void)MyFunctionToGetData
{
MyJSONURL = [NSString stringWithFormat:@"www.myurl.com?input=%@",txtMyText.text];
dispatch_async(GDQueue, ^{Mydata = [NSMutableData dataWithContentsOfURL:[NSURL URLWithString: MyJSONURL]];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject: Mydata waitUntilDone:YES]; });
}
- (void)MyFunctionTofetchedData:(NSMutableData *)responseData
{
NSError* error;
MyArray = [NSJSONSerialization JSONObjectWithData: Mydata options:kNilOptions error:&error];
[tblMyTable reloadData];
}
//TableView delegate methods start
-(int)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(int)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [MyArray count];
}
-(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell==nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString * strDataText = [[MyArray objectAtIndex:indexPath.row] valueForKey:@“myKey"]; cell.textLabel.text = strDataText;
return cell;
}
// I am calling my function here. By doing this i can get results once i edit the text and then click “Return” key. Whereas i want the different result on each key press action on that textfield.
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self MyFunctionToGetData];
}
谢谢!
答案 0 :(得分:1)
[textField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged];
并在方法中
-(void)textFieldDidChange :(UITextField *)theTextField{
NSLog( @"text changed: %@", theTextField.text);
}
您可以在文本字段中看到当前文本。每次用户键入新的char时,您都会填充tableView
答案 1 :(得分:1)
好的,这样,您应该使用以下TextField委托方法:
textField:shouldChangeCharactersInRange:replacementString:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSLog(@"%@",textField.text);
return YES;
},每次按下键盘按钮时都会调用此方法。希望它会有所帮助