0

.xibにあるUISliderを介してUIAcceleromterのupdateIntervalを変更しようとしています。NSLogsには値が完全に表示されますが、スライダーを動かしてもアクセラレータの間隔の速度が上がりません。何が悪いのかわかりません。

私は提供された助けに感謝します。これが私のコードです:

ViewController.h:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIAccelerometerDelegate> {

}

- (IBAction)sliderValueChanged:(UISlider *)slider;

@end

ViewController.m:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize XAxis, YAxis, delta;

float value;

- (void)viewWillAppear:(BOOL)animated
{   
    UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
    accel.delegate = self;
    accel.updateInterval = 1.0f * value;

    NSLog(@"Value: %f",value);
}

- (void)viewDidLoad
{
    [super viewDidLoad];
}

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
    NSLog(@"X: %g",acceleration.x);
    NSLog(@"Y: %g",acceleration.y);
    NSLog(@"Z: %g",acceleration.z);
}

- (IBAction) sliderValueChanged:(UISlider *)slider 
{  
    value = slider.value;
    NSLog(@"Value: %f",slider.value);
} 

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

@end
4

1 に答える 1

3

加速度計の更新間隔を変更するコード行はありません。スライダーの値を a に記憶し、floatを介して出力するだけNSLogです。

加速度計の値は、ビューが表示されたときにのみ設定されます。

加速度計をオブジェクトのプロパティとして保存し、次のようにする必要があります

self.accelerometer.updateInterval = value;

あなたのsliderValueChanged:方法で。

于 2012-07-24T17:26:03.893 に答える