So I have an IBAction yesNo
that I want to be ran on a shake event. Not all too sure why this is not working. Have followed all the documentation.
-(BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (event.subtype == UIEventSubtypeMotionShake)
{
[self yesNo];
}
}
And then the IBAction itself:
- (IBAction)yesNo
{
int rNumber = rand() % 26;
NSUserDefaults *def=[NSUserDefaults standardUserDefaults];
if ([[def objectForKey:@"activeVersion"] isEqualToString:@"0"])
{
switch (rNumber) {
case 0:
result.text = @"Never";
break;
case 1:
result.text = @"If you're lucky...";
break;
case 3:
result.text = @"Think twice";
break;
...
default:
break;
}
}
else if ([[def objectForKey:@"activeVersion"] isEqualToString:@"1"])
{
switch (rNumber) {
case 0:
result.text = @"Never1";
break;
case 1:
result.text = @"If you're lucky...1";
break;
...
case 25:
result.text = @"Very doubtful2";
break;
default:
break;
}
}
else if ([[def objectForKey:@"activeVersion"] isEqualToString:@"3"])
{
switch (rNumber) {
case 0:
result.text = @"Never3";
break;
...
case 25:
result.text = @"Very doubtful3";
break;
default:
break;
}
}
}
Basically what I have is a fortune ball type thing and when the iPhone is shaken I need that IBAction run.
Have you made that view the first responder? I.e. [yourView becomeFirstResponder];
(probably from some viewDidAppear:
method).
You might want to check if it actually is the first responder when you shake your device.