2012-04-06 1 views
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 

ответ

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

Когда это изображение прослушивается один раз, гт: метод будет вызываться, который удалит изображение из self.view

0

Храните указатель на этот образ и где-нибудь удаляйте его из своего супервизора. Либо с таймером, либо с действием пользователя, или что-то в этом роде.

Смежные вопросы