gpt4 book ai didi

iphone - 如何在 iPhone 中使用异步 Web 服务调用自动完成 TextField?

转载 作者:行者123 更新时间:2023-12-03 20:52:02 24 4
gpt4 key购买 nike

我想在我的应用程序中自动填充 UITextFiled。当用户输入一些字母时,它会调用 Web 服务并在 UIpPickerView 中显示响应,就像搜索城市一样。当我们输入任何字母时,它会显示一些城市名称。谁能知道该怎么做吗?请帮我。

最佳答案

要从服务器异步获取数据,您可以使用 NSURLConnectionNSURLConnectionDelegate 方法

在接口(interface)文件中:

@interface ViewController : UIViewController<NSURLConnectionDelegate, UITextFieldDelegate> {
NSMutableData *mutableData;
}
-(void)getDataUsingText:(NSString *)text;
@end

在实现文件中:

@implementation ViewController
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *value =[textField.text stringByReplacingCharactersInRange:range withString:string];
[self getDataUsingText:value];
return YES;
}


-(void)getDataUsingText:(NSString *)text;
{
NSString *urlString = [NSString stringWithFormat:@"http://...."];
NSURL *url =[NSURL URLWithString:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[conn start];
}


-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
mutableData = [[NSMutableData alloc] init];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[mutableData appendData:data];
}


-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *dataString = [[NSString alloc] initWithData:mutableData encoding:NSUTF8StringEncoding];
NSLog(@"your data from server: %@", dataString);
// Here you got the data from server asynchronously.
// Here you can parse the string and reload the picker view using [picker reloadAllComponents];

}
@end

您必须将委托(delegate)设置为文本字段,并且必须使用 NSURLConnectionDelegate 方法中的数据来实现选择器。和this是加载选择器 View 的教程。

关于iphone - 如何在 iPhone 中使用异步 Web 服务调用自动完成 TextField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com