Ios web服务调用响应上的自动填充文本
我是ios编程新手,需要实现类似谷歌搜索框的功能,即自动填充文本字段。 我的设想如下 1.当用户在文本字段中键入时 2.后台调用webservice获取数据(请求数据=文本字段数据) 例如:-如果用户在文本字段中键入“abc”,则web服务调用的请求数据应为“abc”,并且web服务对此作出响应。下一次用户类型“D”,即文本字段包含“ABCD”服务响应时,必须考虑附加文本。(<强>类似谷歌搜索字段< /强>) 3.web服务调用应该是异步的。 4.响应应显示在下拉列表中 在ios中可能吗??? 任何教程或示例都将不胜感激。Ios web服务调用响应上的自动填充文本,ios,web-services,asynchronous-wcf-call,sendasynchronousrequest,Ios,Web Services,Asynchronous Wcf Call,Sendasynchronousrequest,我是ios编程新手,需要实现类似谷歌搜索框的功能,即自动填充文本字段。 我的设想如下 1.当用户在文本字段中键入时 2.后台调用webservice获取数据(请求数据=文本字段数据) 例如:-如果用户在文本字段中键入“abc”,则web服务调用的请求数据应为“abc”,并且web服务对此作出响应。下一次用户类型“D”,即文本字段包含“ABCD”服务响应时,必须考虑附加文本。(类似谷歌搜索字段< /强>) 3.web服务调用应该是异步的。 4.响应应显示在下拉列表中 在ios中可能吗??? 任何教
提前谢谢。看在上帝的份上,我想你说的是一个宁静的Web服务,而不是SOAP 是的,当然有可能。您可以采用这种方法,我可以使用HTTP库(如)发出请求,但为了简单起见,我只是在后台使用URL的内容初始化NSData,并在主线程上使用更新UI
viewDidLoad:
方法
textField.delegate = self;
UITextField
委托方法textField:shouldChangeCharactersRange:replacementString:
重写为:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// To increase performance I advise you to only make the http request on a string bigger than 3,4 chars, and only invoke it
if( textField.text.length + string.length - range.length > 3) // lets say 3 chars mininum
{
// call an asynchronous HTTP request
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL * url = [[NSURL alloc] initWithString:[NSString stringWithFormat:@"http:/example.com/search?q=%@", textField.text]];
NSData * results = [NSData dataWithContentsOfURL:url];
NSArray * parsedResults = [NSJSONSerialization JSONObjectWithData: results options: NSJSONReadingMutableContainers error: nil];
// TODO: with this NSData, you can parse your values - XML/JSON
dispatch_sync(dispatch_get_main_queue(), ^{
// TODO: And update your UI on the main thread
// let's say you update an array with the results and reload your UITableView
self.resultsArrayForTable = parsedResults;
[tableView reloadData];
});
});
}
return YES; // this is the default return, means "Yes, you can append that char that you are writing
// you can limit the field size here by returning NO when a limit is reached
}
- JSON解析(我可以解析XML,但为什么?!JSON更好!)
- HTTP请求(您可以使用AFNetworking,而不是我上面所做的)
- 异步HTTP请求(不阻止主线程)
- GCD(异步调度的
stuff)dispatch\u
- 委托(在本例中为UITextField)
- 当检查大小是否大于3个字符时,您甚至只能每隔2/3个字符发出HTTP请求,比如说,仅在
时请求长度%3
我建议你读一些关于这些的东西,卡洛斯谢谢你的回复。我会检查一下,然后告诉你