0

アプリケーションでシェイク ジェスチャを使用していますが、問題があります。

私のアプリケーションはマルチビュー アプリケーションで、ビュー 2 でシェイク ジェスチャを使用したいです。ビュー 2 でシェイク ジェスチャをアクティブにする場合、シェイク ジェスチャを使用するには、MainViewController.m と MyView2Controller.m に以下のコードを記述する必要があります。

次に、iPhoneを振ると、両方のビューにアラートが表示されますが、それは望ましくありません。アラートがビュー 2 にのみ表示されるようにしたいので、MainViewController.m またはビュー 1 のコードを非アクティブにすると、ビュー 2 では機能しなくなります!

どんな助けでも大歓迎です!

代替テキスト http://www.freezpic.com/pics/98f1465147344642e3870bb599eba689.jpg

これが私のコードです:

-(BOOL)canBecomeFirstResponder {
    return YES;
}

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self becomeFirstResponder];
}

-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

{
    if (event.subtype == UIEventSubtypeMotionShake)
    {
        UIAlertView *alet =[[UIAlertView alloc]initWithTitle:nil message:@"Shake shake shake" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alet show];
        [alet release];
        self.view.backgroundColor = [UIColor orangeColor];

    }
}
4

2 に答える 2

0

OK私はこのコードで私の問題を解決しました:

#define kAccelerationThreshold        2.2
#define kUpdateInterval               (1.0f/10.0f)

@interface info : UIViewController  <UIAccelerometerDelegate> {

}
@end

~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~

@implementation info


- (void)viewDidLoad {
    UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
    accel.delegate = self;
    accel.updateInterval = kUpdateInterval;


    [super viewDidLoad];
}


#pragma mark -
- (void)accelerometer:(UIAccelerometer *)accelerometer 
        didAccelerate:(UIAcceleration *)acceleration {
   {
        if (acceleration.x > kAccelerationThreshold 
            || acceleration.y > kAccelerationThreshold
            || acceleration.z > kAccelerationThreshold) {


//What do you want to do !

            self.view.backgroundColor = [UIColor orangeColor];



        }
    }
}
于 2009-11-07T21:32:12.000 に答える