UIImageView, показывающий UIPopOver - PullRequest
0 голосов
/ 15 мая 2011

Я бы хотел запустить это событие:

- (IBAction)profilePop:(id)sender
{
    ProfileViewController * profile = [[ProfileViewController alloc] init];
    UIImageView * temp = ((UIImageView *)sender);
    profile.uid =  [[[posts objectAtIndex:((UIImageView *)sender).tag] creator] mid];
    NSLog(@"profile id %@", profile.uid);
    UIPopoverController * profilePop  = [[UIPopoverController alloc] initWithContentViewController:profile];
    [profilePop presentPopoverFromRect:CGRectMake(temp.frame.origin.x+temp.frame.size.width, temp.frame.origin.y + temp.frame.size.height/2, profile.view.frame.size.width, profile.view.frame.size.height) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
}

когда пользователь нажимает на UIImageView. Все, что я пытаюсь сделать, это показать всплывающее окно при нажатии UIImageView, и оно отображается справа от UIImageView. Я вижу, что UIImageView не имеет атрибута addAction, поскольку он не является подклассом UIControl. Я провел некоторое исследование, которое, возможно, мне придется использовать вместо UIButton. Это правда? Есть ли способ сделать это с помощью UIImageView, чтобы мне не пришлось переписывать код снова? I

Ответы [ 4 ]

2 голосов
/ 15 мая 2011

Первый.

Вы можете получить прикосновение к любому объекту, который имеет суперкласс как UIView.

, если вы увидите UIImageView в документации Apple.

UIView : UIResponder : NSObject

UIResponder имеет функцию для получения прикосновений.Поэтому реализуйте перечисленные ниже функции в вашем классе представления и обнаруживайте касания на UIImageView.

– touchesBegan:withEvent:
– touchesMoved:withEvent:
– touchesEnded:withEvent:
– touchesCancelled:withEvent:

Секунда:

Вы также можете создать UITapGestureRecognizer для UIImageView.

Ознакомьтесь с приведенным ниже учебником блога.

Работа с UIGestureRecognizers

РЕДАКТИРОВАНИЕ:

Используйте следующий код:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]             initWithTarget:self action:@selector(tapped:)];
[tapRecognizer setNumberOfTapsRequired:1];
[tapRecognizer setDelegate:self];
[MyImageView addGestureRecognizer:tapRecognizer];

если пользователь нажмет один раз, будет вызвана функция tapped , поэтому реализация функции с вкладками должна выглядеть следующим образом

 -(void)tapped:(id)sender
     {

       NSLog(@"See a tap gesture");

         ProfileViewController * profile = [[ProfileViewController alloc] init];
         UIImageView * temp = [(UIPanGestureRecognizer*)sender view];
        profile.uid =  [[[posts objectAtIndex:((UIImageView *)sender).tag] creator] mid];
        NSLog(@"profile id %@", profile.uid);
        UIPopoverController * profilePop  = [[UIPopoverController alloc] initWithContentViewController:profile];
      [profilePop presentPopoverFromRect:CGRectMake(temp.frame.origin.x+temp.frame.size.width, temp.frame.origin.y + temp.frame.size.height/2, profile.view.frame.size.width, profile.view.frame.size.height) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
    }
0 голосов
/ 15 мая 2011

Вы можете создать распознаватель жестов касания и присоединить его к UIImageView.

// By now imageView exists!
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)];
tapGesture.numberOfTapsRequired = 1;
tapGesture.numberOfTouchesRequired = 1;
[imageView addGestureRecognizer:tapGesture];
[tapGesture release];

Теперь handleTapGesture будет очень похоже на ваше -profilePop:

Поскольку вы говоритея полагаю, у вас уже есть распознаватели жестов.

0 голосов
/ 15 мая 2011

Вы можете определить UIB-кнопку типа custom, не давать ей никакого текста или изображения, давать ему четкий фон и ту же рамку, что и вид изображения.Затем добавьте свою цель / селектор к кнопке, и пользователю будет показано, что они нажимают на изображение, когда они фактически нажимают на невидимую кнопку.Это займет около 3 минут для настройки в IB, поэтому я не думаю, что вам нужно будет переписывать свой код снова.

0 голосов
/ 15 мая 2011

А как насчет использования UIButton и использования метода класса для добавления к нему вашего UIImage.

- (void)setImage:(UIImage *)image forState:(UIControlState)state 
...