我正在开发一个带有手势系统的应用程序,基本上如果我将iPhone转向左,我的应用程序将执行一项功能,如果我将iPhone转为右,其他功能,与其他人的手势。
我不知道如何使用它,我正在尝试搜索谷歌但不工作,结果只是触摸手势而不是动作手势。
有人有一个教程来帮助我吗?
Swift3 ios10:
override func viewDidLoad() {
super.viewDidLoad()
self.becomeFirstResponder() // To get shake gesture
}
// We are willing to become first responder to get shake motion
override var canBecomeFirstResponder: Bool {
get {
return true
}
}
// Enable detection of shake motion
override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
if motion == .motionShake {
print("Why are you shaking me?")
}
}
超级易于实施:
1)让iOS知道哪个视图控制器是响应者链中的第一个:
override func viewDidLoad() {
super.viewDidLoad()
self.becomeFirstResponder()
}
override func canBecomeFirstResponder() -> Bool {
return true
}
2)以某种方式处理事件:
override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent?) {
if(event.subtype == UIEventSubtype.MotionShake) {
print("You shook me, now what")
}
}
这已针对IOS 12进行了更新 - 请参阅Apple Docs您不再需要添加becomeFirstResponder()方法。
您只需要在代码中添加motionEnded函数。
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?)
{
// code here
}
斯威夫特5
只需将以下方法添加到ViewController并执行代码即可
override func becomeFirstResponder() -> Bool {
return true
}
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?){
if motion == .motionShake
{
print("Shake Gesture Detected")
//show some alert here
}
}
Speedy99的快速回答是在Objective C版本中
- (void)viewDidLoad {
[super viewDidLoad];
[self becomeFirstResponder];
}
- (BOOL)canBecomeFirstResponder{
return true;
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{
if(event.subtype == UIEventSubtypeMotionShake){
NSLog(@"Why are you shaking me?");
}
}
斯威夫特5
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.becomeFirstResponder()
}
override var canBecomeFirstResponder: Bool {
get {
return true
}
}
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
if motion == .motionShake {
print("shake")
}
}
}
swift文件: - https://developer.apple.com/documentation/uikit/uiresponder。
为了检测运动事件,swift提供了3种方法: -
例如,如果您想要在摇动手势后更新图像
class ViewController: UIViewController {
override func motionEnded(_ motion: UIEvent.EventSubtype, with event:
UIEvent?)
{
updateImage()
}
UpdateImage(){
// Implementation
}
}