是否可以使用JavaScript收听iPhone(或任何带加速度计的手机)震动事件?你知道就像摇动iPhone来播放iTunes中的下一首歌一样,当iPhone被震动时我想在我的网站上调用JS功能.
如何在Swift中的AppDelegate(整个应用程序)中检测到设备震动?
我找到了解释如何在视图控制器中执行此操作的答案,但希望在我的应用程序中执行此操作.
我想创建一个应用程序,即使屏幕锁定,**也会在设备震动时启动主活动.任何人都可以解释如何做到这一点?
我有一个想法,它需要创建一个在后台运行的服务,但我正在努力实际编码,不知道如何做到这一点.
我正试图在这个页面上实现摇动"教程",但我想我错过了一些东西.我将他的加速计功能复制到myAppViewController.m文件中并在其中放入一些nslog,以查看当我使用模拟器"摇动"功能时它是否进入该功能.调试控制台中没有显示任何内容.
http://mithin.in/2009/07/28/detecting-a-shake-using-iphone-sdk
任何人都可以解释我可能会缺少什么?还是指点教程?
我发现这看起来很有希望,但我不知道如何"把它放在一个UIView" 我如何检测有人摇动iPhone?
编辑 - 现在这是我的工作代码,因为接受了答案的建议.
这是我在3.0 iphone sdk中检测摇动手势的代码.
-(BOOL)canBecomeFirstResponder {
return YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewWillDisappear:animated];
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
NSLog(@"{motion ended event ");
if (motion == UIEventSubtypeMotionShake) {
NSLog(@"{shaken state ");
}
else {
NSLog(@"{not shaken state ");
}
}
Run Code Online (Sandbox Code Playgroud) 我们如何通过摇动设备来启动应用程序?我想做一些类似于应用程序"Appshaker"的东西.
我正在使用标签的摇动效果我在桌面视图中按下单元格时调用了动画但是它不起作用.如果我在cellForRowAtIndexPath中调用动画:(NSIndexPath*)indexPath它正在工作但是如果我在didSelectRowAtIndexPath中调用它:(NSIndexPath*)indexPath它不起作用.任何人都可以帮助我??? 提前致谢
-(void)shakeAnimation:(UILabel*) label {
const int reset = 5;
const int maxShakes = 6;
//pass these as variables instead of statics or class variables if shaking two controls simultaneously
static int shakes = 0;
static int translate = reset;
[UIView animateWithDuration:0.09-(shakes*.01) // reduce duration every shake from .09 to .04
delay:0.01f//edge wait delay
options:(enum UIViewAnimationOptions) UIViewAnimationCurveEaseInOut
animations:^{label.transform = CGAffineTransformMakeTranslation(translate, 0);}
completion:^(BOOL finished){
if(shakes < maxShakes){
shakes++;
//throttle down movement
if (translate>0)
translate--;
//change direction
translate*=-1;
[self shakeAnimation:label];
} else …Run Code Online (Sandbox Code Playgroud) 我正在使用它与Shake一起工作,这对我来说很好,但我想在用户摇动他们的设备时启动应用程序,请参阅下面的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
transcript=(TextView)findViewById(R.id.transcript);
scroll=(ScrollView)findViewById(R.id.scroll);
shaker=new Shaker(this, 1.25d, 500, this);
}
@Override
public void onDestroy() {
super.onDestroy();
shaker.close();
}
public void shakingStarted() {
Log.d("ShakerDemo", "Shaking started!");
transcript.setText(transcript.getText().toString()+"Shaking started\n");
scroll.fullScroll(View.FOCUS_DOWN);
}
public void shakingStopped() {
Log.d("ShakerDemo", "Shaking stopped!");
transcript.setText(transcript.getText().toString()+"Shaking stopped\n");
scroll.fullScroll(View.FOCUS_DOWN);
}
Run Code Online (Sandbox Code Playgroud)
所以这是我的问题,如何通过摇动我的设备启动应用程序?
使用UI测试,我希望应用程序响应摇动手势,我想在我的快速UI测试中以编程方式触发摇动手势.
在UI测试会话期间记录时触发摇动手势不会产生任何添加的代码.
有没有办法做到这一点?提前致谢!
我有一个UITextFieldDelegate,它对用户输入进行了大量验证,以确定是否允许它们结束编辑.在一个特定示例中,将该字段留空是无效的.
现在我textField:shouldChangeCharactersInRange:replacementString:用来在用户每次编辑后验证文本输入.
问题是:如果用户清除字段(使用小'x'按钮),验证代码将进入"无效"模式,并阻止用户导航,直到他们输入有效文本.如果用户随后摇动手机以取回旧文本,shouldChangeCharactersInRange则不会再次调用,并且代理处于"无效"状态,而不是再次识别出一切正常.
不确定我是否正确使用它,但似乎内置的UITextFieldDelegate机器无法处理因撤消/重做而导致的文本更改.
在这种情况下,实现正确验证的最佳方法是什么?我真的需要继承UITextField才能实现motionEnded:withEvent:吗?看起来像UITextField中的编辑处理内容实际上应该与用户是否实际键入它或者由于撤消而发生的事情无关,所以如果我真的不得不走这条路线就会感到沮丧.
我已经尝试使用摇动手势识别包装来检测摇动手势.我也试图实现Geeky Lemon中建议的代码.但我无法处理摇晃手势.有没有办法让震动手势得到认可?
谢谢!
编辑1:
代码是在摇动手势识别包装演示的帮助下完成的.
在init方法中
ShakeDispatcher * dispatcher = [ShakeDispatcher sharedInstance];
[dispatcher addShakeListener:self];
[[[CCDirector sharedDirector]view] addGestureRecognizer:dispatcher];
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if ( event.subtype == UIEventSubtypeMotionShake ){
NSLog(@"Shake detected");
}
}
Run Code Online (Sandbox Code Playgroud) shake ×10
iphone ×4
android ×3
ios ×3
swift ×2
appdelegate ×1
delegates ×1
gesture ×1
java ×1
javascript ×1
objective-c ×1
swift3 ×1
uilabel ×1
uitableview ×1
uitextfield ×1
xcode ×1