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];
}

当该图像被点击一次时,将调用 rm: 方法,该方法将从 self.view 中删除该图像

于 2012-04-06T05:05:46.787 回答
0

将指向该图像视图的指针存储在某处,并在需要时将其从超级视图中删除。使用计时器,或用户操作,或类似的东西。

于 2012-04-06T01:48:16.293 回答