如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?相关的知识,希望对你有一定的参考价值。

我正在自学C#,作为其中的一部分,我正在尝试开发一个ios倒计时器应用程序,即在点击计时器启动按钮X秒后播放.wav声音文件,因为计时器值已从X变为0 。

为了做到这一点,我尝试使用System.Timers命名空间,但一直无法弄清楚如何编程上述倒数计时器。下面是我不完整的代码(代码显然不符合上述功能,但可能是完成该功能的完整代码的一部分):

partial void UIButton1416_TouchUpInside(UIButton sender)
{
  url = NSUrl.FromFilename("Sounds/bell.wav");
  bell = new SystemSound(url);

  int RoundedTimerValue = Convert.ToInt32(Math.Round(TimerSlider.Value, 0));

  System.Timers.Timer timer = new System.Timers.Timer();
  timer.Interval = 60000;
  timer.Enabled = true;
}

有没有人知道如何创建所描述的倒数计时器/在点击按钮后X秒触发事件?

答案

示例代码。

Timer timer = new Timer();
        timer.Interval = 60000;
                    timer.Elapsed += new ElapsedEventHandler((x,y) => {
                    //Do whatever you want
                    timer.Stop();
            });

将以下代码放在Button Click Handler中,并使计时器变量全局化。

  timer.Start();

或者您可以将所有内容保留在Button的单击处理程序中,这不是什么大问题。

说明:计时器类有一个名为Elapsed的事件,当计时器的Interval中指定的毫秒数结束时,将调用该事件。与线

timer.Elapsed += new ElapsedEventHandler((x,y) => {...

我们正在分配定时器启动时要调用的Delegate(虚函数)。因此,大括号{}内的任何代码都将在每个Timer.Interval毫秒内调用。我们当时停止计时器,因为我们不希望它继续运行并产生很多事件。

更新2:

通常,EventHandler是使用定义的

return_type functionName(object sender, EventArgs e);

但由于委托是虚拟的,参数也是如此。 x对应于发送者,y对应于e。

该事件处理程序代码也可以写成如下

void someFunction(object sender, ElapsedEventArgs e)
{
   timer.Stop();
}

然后,

timer.Elapsed += new ElapsedEventHandler(someFunction);

至于'=>,您可以阅读有关Lambda Expressions Here的内容

以上是关于如何在Xamarian iOS应用程序中单击按钮后X秒触发事件?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 推送通知消息 - 单击查看按钮后的操作

如何从 WKWebview 内的按钮单击重定向并使用目标 c 返回到 iOS 应用程序?

单击按钮后如何激活专注于输入的iOS键盘?

在 iOS 设备中单击按钮后 CSS 悬停样式仍然存在

单击后退按钮iOS 6时如何继续播放音频

如何在按钮单击时获取 GPS 坐标? (最简单的)