ios - 第一个从计时器完成后如何在下面的函数中调用函数
<p><p>这是我的简单形式的流程。我仍然需要在 #2 完成运行后完成后调用 decisionMaker() 时间到了,并将用于测量的全局变量带到决策者() 进行案例测试</p>
<p>TestButtonTAPPED() 和调用:</p>
<ol>
<li>recordTimer()</li>
<li><p>gatherInput() </p></li>
<li><p>选择器:levelTimerCallback()</p></li>
<li><p>decisionMaker()</p>
<pre><code>// 1.
func recordTimer() {
/* After 10 seconds, let's stop the recording process */
let delayInSeconds = 10.0
let delayInNanoSeconds = DispatchTime.now() + Double(Int64(delayInSeconds * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
DispatchQueue.main.after(when: delayInNanoSeconds, execute: {
self.soundRecorder!.stop()
self.handBtn.isHidden = false
})
}
// 2.
func gatherInput() {
levelTimer = Timer.scheduledTimer(timeInterval: 0.9, target: self, selector: #selector(DBListener.levelTimerCallback), userInfo:nil, repeats: true)
}
//3.
func levelTimerCallback() {
if soundRecorder.averagePower(forChannel: 0) > -30
{
// Do gathering for vaiables
}
}
// 4.
func decisionMaker() {
// case statments here for final measurement
}
@IBAction func handTapped(_ sender: UIButton) {
clearGlobalVariablesOnTap()
listner()
soundRecorder.record()
recordTimer()
dbListener.gatherInput()
}
</code></pre> </li>
</ol></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><pre><code>@IBAction func handTapped(_ sender: UIButton) {
clearGlobalVariablesOnTap()
listner()
soundRecorder.record()
recordTimer()
}
func recordTimer() {
//As soon as this method is called this portion will get executed
dbListener.gatherInput()
/* After 10 seconds, let's stop the recording process */
let delay = 10.0
let delayInSeconds = DispatchTime.now() + DispatchTimeInterval.seconds(delay)
//After 10 seconds this block will execute
DispatchQueue.main.after(when: delayInSeconds, execute: {
self.soundRecorder!.stop()
self.handBtn.isHidden = false
self.levelTimer.invalidate = true
self.decisionMaker()
})
}
func gatherInput() {
levelTimer = Timer.scheduledTimer(timeInterval: 0.9, target: self, selector: #selector(DBListener.levelTimerCallback), userInfo:nil, repeats: true)
}
func levelTimerCallback() {
if soundRecorder.averagePower(forChannel: 0) > -30
{
// Do gathering for vaiables
}
}
func decisionMaker() {
// case statments here for final measurement
}
</code></pre></p>
<p style="font-size: 20px;">关于ios - 第一个从计时器完成后如何在下面的函数中调用函数,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/38749322/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/38749322/
</a>
</p>
页:
[1]