2013-08-05 2 views
0

Я хочу что-то сделать, когда фон был использован на iPhone.Нажатие на фоновое изображение на iPhone

Как включить фоновое прослушивание?

Я положил образец фона на свое приложение, используя этот код.

- void viewDidLoad{ 

    [super viewDidLoad]; 
    UIGraphicsBeginImageContext(self.view.frame.size); 
    [[UIImage imageNamed:@"backgroundimage.jpeg"] drawInRect:self.view.bounds]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 

Как сделать фоновое прослушивание?

Например, я хочу щелкнуть по фону, и появится сообщение «Фон был использован!».

Нужно ли мне для этого IBAction?

Нужна помощь.

+4

Сработали ли вы раньше с помощью распознавателей жеста? Если нет, то я предлагаю вам следовать этому руководству, чтобы начать: http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more –

+0

Попробуйте либо UIButton, либо, как - предложил Пунеет, UIGestureRecognizer. – johnyu

ответ

-1

UIButton - самый простой способ.

- (void)backgroundButtonClicked:(id)sender 
{ 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"Background was tapped!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    /* 
    * Your other code here 
    */ 
    UIButton *backgroundButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    backgroundButton.backgroundColor = [UIColor clearColor]; 
    backgroundButton.frame = self.view.bounds; 
    [backgroundButton addTarget:self action:@selector(backgroundButtonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:backgroundButton]; 
    [self.view sendSubviewToBack:backgroundButton]; 
} 

BTW, нет необходимости делать фоновое изображение, потому что [UIImage imageNamed:@"imagename"] возвращает изображение. Если вы хотите, чтобы представить его, попробуйте поместить код в ваш -viewDidLoad:

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"backgroundimage.jpeg"]]; 
imageView.frame = self.view.bounds; 
[self.view insertSubview:imageView belowSubview:backgroundButton]; 
[imageView release]; 

Edit:

Благодаря @AlexMDC за напоминание мне о UITapGestureRecognizer. Вот UITapGestureRecognizer версия:

- (void)tapped:(UITapGestureRecognizer *)g 
{ 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"Background was tapped!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    /* 
    * Your other code here 
    */ 
    UITapGestureRecognizer*tap = [[UITapGestureRecognizer alloc] init]; 
    [tap addTarget:self action:@selector(tapped:)]; 
    [self.view addGestureRecognizer:tap]; 
    [tap release]; 
} 

Обе версии отвечают требованиям. По общему признанию, UITapGestureRecognizer более мощный и гибкий. Тем не менее, я предпочел бы UIButton сделать трюк на этот раз. Это более легкий, чем распознаватель жестов. Мне не нужно заботиться о состоянии распознавателя жестов, были ли заблокированы события касания или как реализовать UIGestureRecognizerDelegate.
Скорее всего, мы хотим добавить некоторые другие UIView или подклассы UIView на вид контроллера. На этом этапе версия UITapGestureRecognizer должна исключать все нефонические области в методе делегата – gestureRecognizerShouldBegin:.
Если обнаружение двойного крана является новым требованием, еще не слишком поздно реорганизовать UIButton на UITapGestureRecognizer.

+1

Я не согласен. «UITapGestureRecognizer», приложенный к 'self.view', является гораздо лучшим решением. –

0

Что вы можете сделать, это использовать IBAction, который будет намного проще.

В файле заголовка вашего контроллера представления, сделайте следующее:

- (IBAction)backgroundTap:(id)sender; 

В файле реализации контроллера представления, выполните следующие действия:

- (IBAction)backgroundTap:(id)sender 
{ 

} 

В раскадровке, при условии, что у вас есть связанный с диспетчером графического контроллера просмотра с классом контроллера вида, щелкните по фону графического интерфейса диспетчера представлений, а затем отобразите идентификатор инспектора в представлении «Утилиты», который должен отображаться справа. Затем в пользовательском классе, который должен быть пустым, введите UIControl. Теперь перейдите к инспектору соединений и нажмите «Прикоснитесь» к фону, выбрав backgroundTap. Теперь все, что находится внутри метода backgroundTap, будет тем, что произойдет, когда вы выберете фон.

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