gpt4 book ai didi

iOS UISwitch 保持每 4 秒发送一次消息

转载 作者:行者123 更新时间:2023-11-29 00:55:43 26 4
gpt4 key购买 nike

我有一个带有 uiswitch 的聊天应用程序。如果“切换”按钮打开,即使应用处于后台模式,我也希望应用每 3 秒连续发送“hi”。我知道我可以使用 NSTimer,但我真的不知道如何在这段代码中实现它(这是我第一次开发 iOS 应用程序)。请帮我解决这个问题。

我的代码是:

// Allocate, initialize, and add the automatic button.
_AutomaticSend = [[UISwitch alloc] initWithFrame:CGRectMake([self width] - 50.0, textAreaY + Center(160.0, textAreaHeight), 50.0, 50.0)];
[_AutomaticSend addTarget:self action:@selector(changeSwitch:) forControlEvents:UIControlEventValueChanged];

// Switch action
//NSUInteger counter = 0;

- (void)changeSwitch:(id)sender{

if([sender isOn]){
for (int a=1; a<=300; a++)
{
//[self performSelector:@selector(changeSwitch:) withObject:_textField afterDelay:70.0];
[sender setOn:YES animated:YES];
[_textField setText:@"hi"];
NSString * text = [_textField text];

// Update status.

[[TSNAppContext singleton] updateStatus:text];

// Add the status to the bubble.
[self appendLocalPeerTableViewCellWithMessage:text];

}


// NSLog(@"Switch is ON");
} else{
NSLog(@"Switch is OFF");
}

}

现在,在准备好显示所有 300 个“hi”之后,应用程序将显示所有“hi”。但我希望它不断地一个接一个地发送。

最佳答案

  1. 在您的 View Controller 中定义一个 NSTimer 实例和一个计数器:

    @property (nonatomic, strong) NSTimer *timer;
    @property (nonatomic, assign) NSInteger counter;
  2. 在定时器触发时实现方法:

    - (void)timerAction:(id)sender {
    [_textField setText:@"hi"];
    NSString * text = [_textField text];

    // Update status.

    [[TSNAppContext singleton] updateStatus:text];

    // Add the status to the bubble.
    [self appendLocalPeerTableViewCellWithMessage:text];

    // stop the timer after sending for 300 times
    self.counter += 1;
    if (self.counter >= 300) {
    [self.timer invalidate];
    self.timer = nil;
    }
    }
  3. 开关打开时启动计时器:

    - (void)changeSwitch:(id)sender{
    if ([sender isOn]) {
    self.counter = 0;
    self.timer = [NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES];
    } else {
    // kill the timer when switch is off
    [self.timer invalidate];
    self.timer = nil;
    }
    }

但是,您无法让计时器在您的应用程序进入后台后无限期地继续工作(有一些异常(exception):VoIP、GPS 应用程序等)。请引用官方文档Background Execution .

关于iOS UISwitch 保持每 4 秒发送一次消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37626165/

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