0

演習として、iPhone の加速度計機能を試すプロジェクトを作成しました。現在、デバイスでアプリを実行すると、空白の画面から始まり、電話を振ると画像が表示されます。

画像をクリアするには、アプリを強制終了する必要があります。誰かが画像をリセットするソリューションを提供して、プロセスを何度でも繰り返すことができることを望んでいました. (携帯を振る、画像を表示する、画像をクリアする)タイマーか何かが必要だと思いますが、よくわかりません。これがソースコードです。読んで助けてくれてありがとう。

//  ViewController.m
//  AccelTest
//


#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

}

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

-(void)viewWillAppear:(BOOL)animated{
    [self startAccel];
    [self view];

}

-(void)viewWillDisappear:(BOOL)animated{
    [self stopAccel];
    [self view];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return NO;
}


-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{

    double const kThreshold = 2.0;
//    double const kThreshold = 2.0;
    if ( fabsf(acceleration.x) > kThreshold
        || fabsf(acceleration.y) > kThreshold
        || fabsf(acceleration.z) > kThreshold){


        [self.view addSubview:[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Icon.png"]]];

    }
}


-(void)startAccel{
    UIAccelerometer * accel = [UIAccelerometer sharedAccelerometer];
    accel.delegate = self;
    accel.updateInterval = .25;
}

-(void)stopAccel{
    UIAccelerometer * accel = [UIAccelerometer sharedAccelerometer];
    accel.delegate = nil;
}


@end
4

2 に答える 2

1

これが、画像をタップして非表示にする方法です(ARCなし)。

行を削除します。

[self.view addSubview:[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Icon.png"]]];

代わりに次の行を追加します。

UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Icon.png"]];
myImageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(rm:)];
[myImageView addGestureRecognizer:tapgr];
[tapgr release]; tapgr = nil;
[self.view addSubview:myImageView];  
[myImageView release]; myImageView = nil;

次に、View Controllerにメソッドを追加して、タップされたときにUIImageViewを削除します。

-(void)rm:(UITapGestureRecognizer *)tapgr {
    [tapgr.view removeFromSuperview];
}

その画像を1回タップすると、rm:メソッドが呼び出され、self.viewから画像が削除されます。

于 2012-04-06T05:05:46.787 に答える
0

その画像ビューへのポインターをどこかに保存し、必要に応じてスーパービューから削除します。タイマー、ユーザーアクション、またはそのようなものを使用します。

于 2012-04-06T01:48:16.293 に答える