Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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
Ios 如何在Apple Watch中无需按下按钮即可开始和停止听写_Ios_Swift_Watchkit_Watchos 2_Dictation - Fatal编程技术网

Ios 如何在Apple Watch中无需按下按钮即可开始和停止听写

Ios 如何在Apple Watch中无需按下按钮即可开始和停止听写,ios,swift,watchkit,watchos-2,dictation,Ios,Swift,Watchkit,Watchos 2,Dictation,我编写了在苹果手表上使用听写的代码。我使用presentTextInputControllerWithSuggestions直接开始听写 但是,我有两个问题: 我想在我的应用程序启动时开始听写。为此,我在willActivate方法中调用了我的函数,但这样一来,屏幕上只会出现一个等待的图像,而不是听写的第一页 我想在不按“完成”按钮的情况下停止听写。我不知道这是否可能,我怎样才能做到 这是我的代码: func dictation(){ self.presentTextInpu

我编写了在苹果手表上使用听写的代码。我使用presentTextInputControllerWithSuggestions直接开始听写

但是,我有两个问题:

  • 我想在我的应用程序启动时开始听写。为此,我在willActivate方法中调用了我的函数,但这样一来,屏幕上只会出现一个等待的图像,而不是听写的第一页
  • 我想在不按“完成”按钮的情况下停止听写。我不知道这是否可能,我怎样才能做到
这是我的代码:

func dictation(){
        self.presentTextInputControllerWithSuggestions([], allowedInputMode: WKTextInputMode.Plain, completion:{
            (results) -> Void in
                 //myCode
            })
    }
override func willActivate(){
   super.willActivate()
   dictation()
}
override init(){
    super.init()
    print("start init")
    let seconds = 1.0
    let delay = seconds * Double(NSEC_PER_SEC)  // nanoseconds per seconds
    let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    dispatch_after(dispatchTime, dispatch_get_main_queue(), {
        self.dictation()
    })
    print("end init")
}

您有解决方案吗?

谢谢您的帮助@Feldur

我迟迟没有试过,但似乎奏效了

这是我的代码:

func dictation(){
        self.presentTextInputControllerWithSuggestions([], allowedInputMode: WKTextInputMode.Plain, completion:{
            (results) -> Void in
                 //myCode
            })
    }
override func willActivate(){
   super.willActivate()
   dictation()
}
override init(){
    super.init()
    print("start init")
    let seconds = 1.0
    let delay = seconds * Double(NSEC_PER_SEC)  // nanoseconds per seconds
    let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    dispatch_after(dispatchTime, dispatch_get_main_queue(), {
        self.dictation()
    })
    print("end init")
}
这是我的日志:

start init
end init
start awakeWithContext
end awakeWithContext
start willactivate
end willactivate
start didAppear
end didAppear
start dictation
屏幕出现,然后开始听写


当用户停止说话时,您是否有停止听写的想法?

相关:如果您在短时间延迟后或在DidAspect中发布听写调用,会发生什么情况?@Feldur我在开始和完成一个函数时打印日志。这是我的日志:“开始初始化结束初始化开始唤醒WithContext结束唤醒WithContext开始将激活结束将激活开始显示开始听写结束显示”我总是有我的等待屏幕。你需要处理音频流以寻找安静(没有能量)谢谢。你知道是否有API或本机组件来做这件事吗?我不知道。也许在AV中?如果你在功率谱上搜索,你可以找到数学公式。我会用这种方法寻找更多的。如果有人有另一个想法,我已经能够通过一个名为EZAudio的库检测到静音(确切地说:音量低于阈值的时间段)(还允许您制作语音波形的动画图),不幸的是,它现在已经停止,但您仍然可以使用它。问题是我只能在iPhone应用程序中使用它,因为WatchOS抱怨EZAudio架构不受支持,我现在知道如何重新编译它。