Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIB按钮限制按下次数_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone UIB按钮限制按下次数

Iphone UIB按钮限制按下次数,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我遇到了一个问题,用户快速按下我的UIButton,导致多个条目被放置在在线存储的数据库中。我尝试过各种方法,比如在调用操作时隐藏按钮和某种切换,但都没有成功。有没有办法限制新闻界只有一家。该操作链接到按钮上的“内部修补”参考 -(IBAction)postData:(id)sender { if(loginControl == 0) { if(nameIB.text.length && numberIB.text.length > 0)

我遇到了一个问题,用户快速按下我的UIButton,导致多个条目被放置在在线存储的数据库中。我尝试过各种方法,比如在调用操作时隐藏按钮和某种切换,但都没有成功。有没有办法限制新闻界只有一家。该操作链接到按钮上的“内部修补”参考

-(IBAction)postData:(id)sender
{   

    if(loginControl == 0)
    {
    if(nameIB.text.length && numberIB.text.length > 0)
    {
        loginControl = 1;
        loginButton.hidden = YES;

        NSMutableData *data = [NSMutableData data]; 

        NSString *number = numberIB.text;
        NSString *name = nameIB.text;

        NSString *nameString = [[NSString alloc] initWithFormat:@"name=%@", name];
        NSString *numberString = [[NSString alloc] initWithFormat:@"&number=%@", number];
        NSString *genderString = [[NSString alloc] initWithFormat:@"&gender=%@", gender];

        //NSLog(nameString);
        //NSLog(numberString);

        [data appendData:[nameString dataUsingEncoding:NSUTF8StringEncoding]];
        [data appendData:[numberString dataUsingEncoding:NSUTF8StringEncoding]];
        [data appendData:[genderString dataUsingEncoding:NSUTF8StringEncoding]];

        NSURL *url = [NSURL URLWithString:@"http://www.blah.net/blah.php"];
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

        [request setHTTPMethod:@"POST"];
        [request setHTTPBody:data];

        NSURLResponse *response;
        NSError *err;
        NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
        NSLog(@"responseData: %@", responseData);

        userData = responseData;
        [self startParsingUserId];

        logoutButton.hidden = NO;
    }
    else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Text Fields Empty" message:@"One Or More Textfields Are Empty" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
        [alert show];
        [alert release];

        loginControl = 0;
    }
    }

}

您应该立即设置按钮的
enabled
hidden
属性以禁用交互

但是直到运行循环的下一轮,当所有内容都重新绘制时,更改才会生效。当你的代码运行时,你的代码正在隐藏按钮,做一些事情,然后取消隐藏按钮,所有这些都是在按钮有机会重新绘制之前完成的

您应该做的是设置
hidden
属性,然后开始计算(最好是在后台线程上)。一旦且仅在计算完成后,您应该向主线程发出信号,再次取消隐藏按钮

如果您同意仅在iOS 4.0+上使用此功能,您可以通过Grand Central Dispatch轻松完成此功能:

- (IBAction)doStuff:(id)sender {
  [button setEnabled:NO];
  dispatch_async(dispatch_get_global_queue(0,0), ^{

    // do all your computation/synchronous requesting here
    // this will happen on a background thread

    dispatch_async(dispatch_get_main_queue(), ^{
      [button setEnabled:YES];
    });
  });
}

您应该立即设置按钮的
enabled
hidden
属性以禁用交互

但是直到运行循环的下一轮,当所有内容都重新绘制时,更改才会生效。当你的代码运行时,你的代码正在隐藏按钮,做一些事情,然后取消隐藏按钮,所有这些都是在按钮有机会重新绘制之前完成的

您应该做的是设置
hidden
属性,然后开始计算(最好是在后台线程上)。一旦且仅在计算完成后,您应该向主线程发出信号,再次取消隐藏按钮

如果您同意仅在iOS 4.0+上使用此功能,您可以通过Grand Central Dispatch轻松完成此功能:

- (IBAction)doStuff:(id)sender {
  [button setEnabled:NO];
  dispatch_async(dispatch_get_global_queue(0,0), ^{

    // do all your computation/synchronous requesting here
    // this will happen on a background thread

    dispatch_async(dispatch_get_main_queue(), ^{
      [button setEnabled:YES];
    });
  });
}

在按钮的选择器中,使用运行一段代码以禁用按钮,直到方法的逻辑完成。

在按钮的选择器中,使用运行一段代码以禁用按钮,直到方法的逻辑完成。

您能帮我解决类似的问题吗?你能帮我解决一个类似的问题吗?