如何识别屏幕高五

Osc*_*and 5 uigesturerecognizer ios swift

我有一个客户想要识别用户用他们的整个手牌,如高五.我怀疑苹果不会批准这一点,但让我们远离那个.

我虽然使用了四指点击识别器,但这并没有真正涵盖它.最好的方法可能是用手检查用户是否覆盖了至少70%的屏幕,但我不知道该怎么做.

有人可以帮帮我吗?

Osc*_*and 1

算是解决了。接近+加速计效果足够好。多点触控不起作用,因为它会忽略它不认为是点击的东西。

import UIKit
import CoreMotion
import AVFoundation

class ViewController: UIViewController {
    var lastHighAccelerationEvent:NSDate? {
        didSet {
            checkForHighFive()
        }
    }

    var lastProximityEvent:NSDate? {
        didSet {
            checkForHighFive()
        }
    }

    var lastHighFive:NSDate?


    var manager = CMMotionManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        //Start disabling the screen
        UIDevice.currentDevice().proximityMonitoringEnabled = true
        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(proximityChanged), name: UIDeviceProximityStateDidChangeNotification, object: nil)

        //Check for acceloremeter
        manager.startAccelerometerUpdatesToQueue(NSOperationQueue.mainQueue()) { (data, error) in
            let sum = abs(data!.acceleration.y + data!.acceleration.z + data!.acceleration.x)

            if sum > 3 {
                self.lastHighAccelerationEvent = NSDate()
            }
        }

        //Enable multitouch
        self.view.multipleTouchEnabled = true
    }

    func checkForHighFive() {
        if let lastHighFive = lastHighFive where abs(lastHighFive.timeIntervalSinceDate(NSDate())) < 1 {
            print("Time filter")
            return
        }

        guard let lastProximityEvent = lastProximityEvent else {return}
        guard let lastHighAccelerationEvent = lastHighAccelerationEvent else {return}

        if abs(lastProximityEvent.timeIntervalSinceDate(lastHighAccelerationEvent)) < 0.1 {
            lastHighFive = NSDate()
            playBoratHighFive()
        }

    }

    func playBoratHighFive() {
        print("High Five")
        let player = try! AudioPlayer(fileName: "borat.mp3")
        player.play()
    }

    func proximityChanged() {
        if UIDevice.currentDevice().proximityState {
            self.lastProximityEvent = NSDate()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)