0

ユーザーがデバイスを連続して振ると、応答が null と表示されるため、シェイクを 5 秒間遅らせたいと考えています。そのため、応答が生きていない限り、シェイクを n まで遅らせたいのです。

これが私のコードです

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

    if (motion == UIEventSubtypeMotionShake) {

        [FlurryAnalytics logEvent:@"User shaked to update"];

        [[NSNotificationCenter defaultCenter] postNotificationName:@"CheckWeather" object:nil];

        [[NSNotificationCenter defaultCenter] postNotificationName:@"startWeatherNeue" object:nil];

        if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )

            [super motionEnded:motion withEvent:event];

    }
}
4

2 に答える 2

1

後でセレクターを実行するには、次を使用できます。

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay
于 2012-09-25T11:04:24.127 に答える
1

目的の ci では、処理を停止するためにsleep(6)を使用し、発生した通知コードの前に sleep(6) を配置します。

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

if (motion == UIEventSubtypeMotionShake) {

 sleep(6);

[FlurryAnalytics logEvent:@"User shaked to update"];

[[NSNotificationCenter defaultCenter] postNotificationName:@"CheckWeather" object:nil];

[[NSNotificationCenter defaultCenter] postNotificationName:@"startWeatherNeue" object:nil];

if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )

    [super motionEnded:motion withEvent:event];

    } 
 }

その後、プロセスを 6 秒間停止し、6 秒後に通知を開始すると、役立つ場合があります。

他の

u も NSTimer を使用します:-

NSTimerで、if else条件で応答配列カウント> 0を確認し、応答配列> 0の場合に1秒でメソッドを呼び出し、次にNSNOtificationメソッドを呼び出します

ここに私の例:-NSTimerを使用

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

  self.TimeOfActiveUser = [NSTimer scheduledTimerWithTimeInterval:01.0  target:self   selector:@selector(checkInfoString) userInfo:nil repeats:YES];
 }


 -(IBAction)checkInfoString
 {

    if([responsearray count]>0)
    {
    [FlurryAnalytics logEvent:@"User shaked to update"];

    [[NSNotificationCenter defaultCenter] postNotificationName:@"CheckWeather" object:nil];

    [[NSNotificationCenter defaultCenter] postNotificationName:@"startWeatherNeue" object:nil];

        if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
        {
          [super motionEnded:motion withEvent:event];
         } 

    }
   else
    {

     NSLOG
    }
 }
于 2012-09-25T12:53:13.350 に答える