我无法弄清楚如何让UIButton激活iPhone LED

时间:2015-04-04 17:36:15

标签: iphone xcode swift

我有代码。

@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

并将它们添加为二进制文件。

我不知道自己做错了什么。 请帮忙。谢谢!

1 个答案:

答案 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()
}