Skip to content

Instantly share code, notes, and snippets.

@Bayonetta
Created February 15, 2017 04:09
Show Gist options
  • Save Bayonetta/64b445d98b1347b6673b94b4b9bbe746 to your computer and use it in GitHub Desktop.
Save Bayonetta/64b445d98b1347b6673b94b4b9bbe746 to your computer and use it in GitHub Desktop.
How to add vibrate feedback
#pragma mark - AudioServicesPlaySystemSound
- (IBAction)shake0:(UIButton *)sender {
// `Peek` 震动反馈 (weak boom)
AudioServicesPlaySystemSound(1519);
}
- (IBAction)shake1:(UIButton *)sender {
// `Pop` 震动反馈 (strong boom)
AudioServicesPlaySystemSound(1520);
}
- (IBAction)shake2:(UIButton *)sender {
AudioServicesPlaySystemSound(1521);
}
#pragma mark - _tapticEngine
- (IBAction)shake3:(UIButton *)sender {
id tapticEngine = [[UIDevice currentDevice] performSelector: NSSelectorFromString(@"_tapticEngine")
withObject:nil];
[tapticEngine performSelector: NSSelectorFromString(@"actuateFeedback:")
withObject:@(0)];
// SEL selector = NSSelectorFromString(@"actuateFeedback:");
// int32_t arg = 1001;
//
// NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[tapticEngine methodSignatureForSelector:selector]];
// [inv setTarget:tapticEngine];
// [inv setSelector:selector];
// [inv setArgument:&arg atIndex:2];
// [inv invoke];
}
#pragma mark - UIImpactFeedbackGenerator
- (IBAction)shake4:(UIButton *)sender {
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle: UIImpactFeedbackStyleLight];
[generator prepare];
[generator impactOccurred];
}
- (IBAction)shake5:(UIButton *)sender {
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle: UIImpactFeedbackStyleMedium];
[generator prepare];
[generator impactOccurred];
}
- (IBAction)shake6:(UIButton *)sender {
UIImpactFeedbackGenerator *generator = [[UIImpactFeedbackGenerator alloc] initWithStyle: UIImpactFeedbackStyleHeavy];
[generator prepare];
[generator impactOccurred];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment