我有代码。
@IBAction func toggleFlash(sender: AnyObject) {
func toggleFlash() {
let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
if (device.hasTorch) {
device.lockForConfiguration(nil)
if (device.torchMode == AVCaptureTorchMode.On) {
device.torchMode = AVCaptureTorchMode.Off
} else {
device.setTorchModeOnWithLevel(1.0, error: nil)
}
device.unlockForConfiguration()
}
}
}
我将一个按钮连接到该代码。 iPhone LED无法启动。我还导入了以下内容:
import UIKit
import AVFoundation
import MessageUI
import UIKit
import CoreGraphics
并将它们添加为二进制文件。
我不知道自己做错了什么。 请帮忙。谢谢!
答案 0 :(得分:1)
您错误地嵌套内部功能 您的IBAction功能
func toggleFlash() {
}
因此,当按下按钮时,将调用您的IBAction函数,但不会调用内部函数,该函数不受IBAction函数内部任何内容的影响。
我建议您删除显示的内部功能行,然后重试。
当然,使用调试器或print语句确认在执行此操作后调用了您的IBAction函数。
我不能保证灯光亮起,但我首先要让你的IBAction功能正常工作。这是从内部删除嵌套函数后显示的函数:
@IBAction func toggleFlash(sender: AnyObject) {
let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
if (device.hasTorch) {
device.lockForConfiguration(nil)
if (device.torchMode == AVCaptureTorchMode.On) {
device.torchMode = AVCaptureTorchMode.Off
} else {
device.setTorchModeOnWithLevel(1.0, error: nil)
}
device.unlockForConfiguration()
}
}
为了将来参考,可以在Swift中的函数(嵌套函数)中放置一个函数,但除非你调用它,否则不会调用内部函数。
示例:
func a(i : Int) {
func b() {
var j = i * 2
println("doubled: " + j)
}
b()
}