HeadGazeLib is a pure Swift library to empower iOS app control through head gaze without a finger touch.
Any iOS developer who would like to introduce head-based control to their app. Ideal for accessibility and game control.
iPhone X, iOS 11, Swift 4
- Simply copy and paste the entire folder
HeadGazeLibto your xcode project. - Extend your ViewController from
UIHeadGazeViewControllerand change the button outlet reference class fromUIButtontoUIHoverableButtonorUIBubbleButton
class MyViewController: UIHeadGazeViewController{
@IBOutlet weak var myButton: UIBubbleButton! // UIButton!
}-
Similarily, change the button class from
UIButtontoUIHoverableButtonorUIBubbleButtonin the identity inspector of storyboard -
Define head gaze event handler through
UIHeadGazeRecognizerinstance inMyViewControllerclass
class MyViewController: UIHeadGazeViewController{
//.....
private var headGazeRecognizer: UIHeadGazeRecognizer? = nil
override func viewDidLoad() {
super.viewDidLoad()
setupGestureRecognizer()
}
private func setupGestureRecognizer() {
// add head gaze recognizer to handle head gaze event
self.headGazeRecognizer = UIHeadGazeRecognizer()
super.virtualCursorView?.smoothness = 9
super.virtualCursorView?.addGestureRecognizer(headGazeRecognizer)
self.headGazeRecognizer?.move = { [weak self] gaze in
self?.buttonAction(button: (self?.myButton)!, gaze: gaze)
}
}
private func buttonAction(button: UIButton, gaze: UIHeadGaze){
guard let button = button as? UIHoverableButton else { return }
button.hover(gaze: gaze)
}
//....
}For working demo, we have prepared two examples:
- HeadSwipe: Swipe daily deal on eBay with head control
- Sensitivity: Head control sensitivity analysis app is used to track the location and timestamp of the cursor as user is "clicking" the button. Useful for user study.
Copyright 2018 eBay Inc.
HeadGazeLib is available under the MIT license. See the LICENSE file for more info.
Jinrong Xie, Muratcan Cicek, Robinson Piramuthu