gpt4 book ai didi

ios - 我如何检测有人在摇动 iPhone?

转载 作者:IT王子 更新时间:2023-10-29 07:24:40 25 4
gpt4 key购买 nike

我想在有人摇动 iPhone 时使用react。我并不特别在意他们如何摇晃它,只在乎它被大力挥动了一秒钟。有谁知道如何检测这个?

最佳答案

在 3.0 中,现在有一种更简单的方法 - Hook 新的运动事件。

主要技巧是您需要一些 UIView(不是 UIViewController)作为 firstResponder 来接收摇动事件消息。以下是您可以在任何 UIView 中使用以获取摇动事件的代码:

@implementation ShakingView

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if ( event.subtype == UIEventSubtypeMotionShake )
{
// Put in code here to handle shake
}

if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
[super motionEnded:motion withEvent:event];
}

- (BOOL)canBecomeFirstResponder
{ return YES; }

@end

您可以轻松地将任何 UIView(甚至系统 View )转换为可以获取摇动事件的 View ,只需通过仅使用这些方法对 View 进行子类化(然后选择这种新类型而不是 IB 中的基本类型,或使用它分配 View 时)。

在 View Controller 中,你想设置这个 View 成为第一响应者:

- (void) viewWillAppear:(BOOL)animated
{
[shakeView becomeFirstResponder];
[super viewWillAppear:animated];
}
- (void) viewWillDisappear:(BOOL)animated
{
[shakeView resignFirstResponder];
[super viewWillDisappear:animated];
}

不要忘记,如果您有其他 View 从用户操作(如搜索栏或文本输入字段)成为第一响应者,您还需要在其他 View 退出时恢复摇晃 View 第一响应者状态!

即使您将 applicationSupportsShakeToEdit 设置为 NO,此方法也有效。

关于ios - 我如何检测有人在摇动 iPhone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com