[英]Auto fill text on web service call response
我是ios編程的新手,需要實現類似谷歌搜索框的東西,即自動填充文本字段。 我的場景如下1.當用戶在文本字段中鍵入時2.background調用webservice獲取數據( 請求數據=文本字段數據 )。
例如: - 如果用戶在Web服務調用的文本字段請求數據中鍵入“abc”應為“abc”,並且Web服務對此進行響應。 現在下次用戶輸入“d”即textfield包含“abcd”服務響應時必須考慮附加文本。( 類似谷歌搜索字段 )3.web服務調用應該是異步的。 4.response應顯示在下拉列表中。
有可能在ios ??? 任何教程或示例將不勝感激。 提前致謝。
我會假設你正在談論一個寧靜的網絡服務,而不是肥皂,為了上帝的愛!
是的,當然有可能 。 您可以按照這種方法,我可以使用AF libneting等HTTP庫來發出請求,但為了簡單起見,我只是使用背景上的URL內容初始化NSData並使用GCD更新主線程上的UI。
將您的UITextField委托設置為您正在使用viewDidLoad:
方法的ViewController
textField.delegate = self;
覆蓋UITextField
委托方法textField:shouldChangeCharactersInRange:replacementString:
with:
- (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 }
如您所見,您需要習慣以下概念列表:
dispatch_async
東西) 性能更新
length % 3
。 我建議你讀一些關於那些的東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.