hier ist der Code: http://min.us/mWdMO0n14von einer anderen Klasse eine Methode aufrufen, wenn Shake erkannt wird
Ich bin ein Neuling Obj C, also habe ich ziemlich viel gesucht, haben aber nichts gefunden, das lösen kann meine Problem.
Ich habe CalculatorViewController.h und .m und dann CalculatorBrain.h and.m (Stanford Lectures)
in CalculatorBrain.m, ich habe die folgende Methode, mit allen Variablen als privat in der CalculatorBrain definiert Header.
Dann in CalculatorBrain.m, habe ich alles eingerichtet, um Shakes zu erkennen, wie folgt. Ich habe etwas Code oberhalb der Shake-Erkennung eingefügt, damit Sie eine allgemeine Idee haben.
@interface CalculatorViewController()
@property(nonatomic, retain) CalculatorBrain *brain;
@end
@implementation CalculatorViewController
@synthesize brain;
- (CalculatorBrain *)brain {
if (!brain) {
brain = [[CalculatorBrain alloc] init];
}
return brain;
}
-(BOOL)canBecomeFirstResponder{
return YES;
}
-(void)viewDidAppear: (BOOL) animated{
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.subtype == UIEventSubtypeMotionShake)
{
NSLog(@"SHAKE IT!");
[brain clearEverythingOnShakeGesture]; //********** not sure how to call this.
}
}
Ich bin nicht sicher, wie [brain clearEverythingOnShakeGesture];
nennen, weil ich den Fehler „Klasse Methode + clearEverythingOnShakeGesture nicht gefunden, Standardwerte Typ id zurückzukehren“ bekommen. Wenn ich es jedoch zu einer Klassenmethode mache, sind die darin enthaltenen Variablen Instanzvariablen, was einen weiteren Fehler liefert. Jede Hilfe sehr geschätzt.
Zwei Vorschläge: 1. Machen Sie die Methode statisch. 2. Verwende [self.brain clearEverythingOnShakeGesture]. – David
Haben Sie versucht [self.brain clearEverythingOnShakeGesture]; ? Um jegliche Unklarheit darüber zu beseitigen, was "Gehirn" ist, würde ich es so synthetisieren: @synthesize brain = _brain; . –