简体   繁体   English

按下按钮后立即退出键盘

[英]Resign keyboard immediately after button press

I have a button, "getResponse", that makes a XMLRPC call to a server after you put in an IP address in a UITextField.我有一个按钮“getResponse”,在您将 IP 地址放入 UITextField 后,它会向服务器发出 XMLRPC 调用。 Id like the "getResponse" button to first resign the keyboard if its up THEN make the call to the server.我喜欢“getResponse”按钮首先退出键盘,如果它启动然后调用服务器。

As it is now, if the keyboard is up, it will make the call to the server, retrive the info or the error if no valid server found, THEN resign the keyboard.就像现在一样,如果键盘启动,它将调用服务器,如果没有找到有效的服务器,则检索信息或错误,然后退出键盘。

I know its probably something very easy but I can't for the life of me figure it out.我知道这可能很容易,但我一生都无法弄清楚。 Any help would be great, thanks!任何帮助都会很棒,谢谢!

Code:代码:

h. H。

    #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

m.米。

#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];
    }
}

Instead of代替

[self serverInputReturn:self];

Try尝试

[self serverInputReturn:self.serverInput];

You need to pass the UITextField not the UIViewController.您需要通过 UITextField 而不是 UIViewController。

Make sure that you are setting the UITextField's delegate to the UIViewController via确保将 UITextField 的委托设置为 UIViewController 通过

self.serverInput.delegate = self;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM