Iphone 按下按钮后立即退出键盘
我有一个按钮“getResponse”,它在UITextField中输入IP地址后,对服务器进行XMLRPC调用。我希望“getResponse”按钮先退出键盘(如果键盘已打开),然后调用服务器 现在,如果键盘打开,它将调用服务器,检索信息或错误(如果找不到有效的服务器),然后退出键盘 我知道这可能很容易,但我一辈子都想不出来。任何帮助都会很好,谢谢 代码: h.Iphone 按下按钮后立即退出键盘,iphone,ios,xml-rpc,Iphone,Ios,Xml Rpc,我有一个按钮“getResponse”,它在UITextField中输入IP地址后,对服务器进行XMLRPC调用。我希望“getResponse”按钮先退出键盘(如果键盘已打开),然后调用服务器 现在,如果键盘打开,它将调用服务器,检索信息或错误(如果找不到有效的服务器),然后退出键盘 我知道这可能很容易,但我一辈子都想不出来。任何帮助都会很好,谢谢 代码: h. #import <UIKit/UIKit.h> #import "XMLRPCResponse.h" #impo
#import <UIKit/UIKit.h>
#import "XMLRPCResponse.h"
#import "XMLRPCRequest.h"
#import "XMLRPCConnection.h"
@interface SecondViewController : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate, UITextFieldDelegate> {
IBOutlet UILabel *helloResponse;
IBOutlet UILabel *SumCountsResponse;
IBOutlet UITextField *serverInput;
IBOutlet UIPickerView *pickerView;
IBOutlet UILabel *pickerTrap;
IBOutlet UIAlertView *alert;
NSMutableArray * pickerViewArray;
int trapSelected;
}
@property(nonatomic,retain) IBOutlet UILabel *helloResponse;
@property(nonatomic,retain) IBOutlet UILabel *SumCountsResponse;
@property(nonatomic,retain) IBOutlet UITextField *serverInput;
@property(nonatomic,retain) IBOutlet UIPickerView *pickerView;
@property(nonatomic,retain) IBOutlet UILabel *pickerTrap;
@property(nonatomic,retain) IBOutlet UIAlertView *alert;
- (IBAction)getResponse:(id)sender;
- (IBAction)serverInputReturn:(id)sender;
- (IBAction)backgroundTouched:(id)sender;
@end
#import "SecondViewController.h"
@implementation SecondViewController
@synthesize helloResponse;
@synthesize SumCountsResponse;
@synthesize serverInput;
@synthesize pickerView;
@synthesize pickerTrap;
@synthesize alert;
-(IBAction)serverInputReturn:(id)sender { //resign keyboard on 'return' button
[sender resignFirstResponder];
}
-(IBAction)backgroundTouched:(id)sender { //resign keyboard on background touch
[serverInput resignFirstResponder];
}
-(IBAction)getResponse: (id) sender {
[self serverInputReturn:self]; //trying to call method to resign keyboard first
//setup IP call for XMLserver
NSString *server = serverInput.text;
NSString *http = @"http://";
server = [server stringByAppendingString:@":8080/RPC2"];
server = [http stringByAppendingString:server];
//Begin calls to XMLRPC server for data return
XMLRPCRequest *requestHello = [[XMLRPCRequest alloc] initWithHost:[NSURL URLWithString:server]];
[requestHello setMethod:@"hello" withObjects:[NSArray arrayWithObjects: nil]];
NSString *resultHello = [self executeXMLRPCRequest:requestHello];
[requestHello release];
XMLRPCRequest *requestSumCounts = [[XMLRPCRequest alloc] initWithHost:[NSURL URLWithString:server]];
[requestSumCounts setMethod:@"SumCountsString" withObjects:[NSArray arrayWithObjects: nil]];
NSString *resultSumCounts = [self executeXMLRPCRequest:requestSumCounts];
[requestSumCounts release];
XMLRPCRequest *requestTrapCountX = [[XMLRPCRequest alloc] initWithHost:[NSURL URLWithString:server]];
[requestTrapCountX setMethod:@"TrapCountString" withObjects:[NSArray arrayWithObjects: [NSNumber numberWithInt:trapSelected], nil]];
NSString *resultTrapCountX = [self executeXMLRPCRequest:requestTrapCountX];
[requestTrapCountX release];
if (![resultHello isKindOfClass:[NSString class]]){
alert = [[UIAlertView alloc] initWithTitle:@"Error: Invalid Server Address" message:@"Please Check Server Address and Try Again" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[alert show];
[alert release];
}
else{
helloResponse.text = resultHello;
SumCountsResponse.text = resultSumCounts;
pickerTrap.text = resultTrapCountX;
}
}
}
- (id)executeXMLRPCRequest:(XMLRPCRequest *)req {
XMLRPCResponse *userInfoResponse = [XMLRPCConnection sendSynchronousXMLRPCRequest:req];
if ([userInfoResponse isKindOfClass:[NSError class]]) {
return alert;
}
else{
return [userInfoResponse object];
}
}
而不是
[self serverInputReturn:self];
试一试
您需要传递UITextField,而不是UIViewController
确保您正在通过将UITextField的委托设置为UIViewController
self.serverInput.delegate = self;
需要更多信息。发生了什么事?您希望发生什么?该按钮正在执行调用XMLRPC服务器的代码。我首先在UITextBox中输入IP地址,然后按getResponse iAction。我希望它首先退出键盘,然后调用XMLRPC服务器并显示数据。现在,首先调用服务器,然后数据通过,然后键盘退出。不,仍然是一样的:按getResponse,调用服务器,获取信息,然后释放键盘…您可以直接尝试,[self.serverInput resignFirstResponder]?还可以检查serverInput是否确实是第一响应者,via serverInput.isfirstresponderaded:'如果(serverInput.isFirstResponder){[self.serverInput resignFirstResponder];}'但仍然做同样的事情…我很抱歉。首先..请使用self.serverInput。不是服务器输入。其次,代码是否进入if语句?你能在调试模式下运行吗?
self.serverInput.delegate = self;