Как установить положение ImageView после получения положения x и y при касании пальцем в iphone

Я делаю приложение для ipad, в котором у меня есть tableView с пользовательским интерфейсом, он работает нормально, но я хочу, чтобы, когда пользователь нажимает кнопку добавления в пользовательской ячейке, он получал положение x и y этой кнопки, а затем устанавливал imageView в центр эта кнопка.

Я искал код, он получает очки, но как добавить сделать это для cell.addButton, как ячейка настраивается.

        [cell.imageButton addTarget:self action:@selector(imageButtonActionOne:) forControlEvents:UIControlEventTouchUpInside];
    [cell.addButton addTarget:self action:@selector(imageButtonAction:) forControlEvents:UIControlEventTouchUpInside];

Вот код для прикосновения

    UITapGestureRecognizer *rec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
   [cell.addButton addGestureRecognizer:rec];
    [rec release];

Но таким образом он не вызывает метод, который находится в cell.addButton imageButtonAction.

2 ответа

Решение

Как я понимаю из вас, вам нужно установить изображение в UIButton при нажатии.

Если вы добавили UITapGestureRecognizer, вы удалили распознавание касаний по умолчанию, и теперь только это будет работать:

 UITapGestureRecognizer *rec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
[cell.addButton addGestureRecognizer:rec];
[rec release]; 

Вы должны удалить приведенный выше код и установить только это:

[cell.addButton addTarget:self action:@selector(imageButtonAction:) forControlEvents:UIControlEventTouchUpInside];

где imageButtonAction: is:

- (void )imageButtonAction:(UIButton *) b
{
 [b setImage:[UIImage imageNamed:@"img.png"] forState:UIControlStateNormal];
}

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

- (void )imageButtonAction:(UIButton *) b
{
 UITableViewCell *cell = (UITableViewCell*)[b superview]; 
 NSInteger imgWidth = 50;
 UIImageView *img = [[UIImageView alloc]initWithFrame:CGRectMake(b.frame.origin.x - imgWidth,b.frame.origin.y,imgWidth,b.frame.size.height)];
img.backgroundColor = [UIColor redColor];
[cell addSubview:img];
[img release];

}


       UIButton *btn = (UIButton *)sender;
UIImageView *backimage = [[UIImageView alloc] initWithFrame:CGRectMake(10,0,312,105)];

//If you want to do this set interaction enabled.
backimage.userInteractionEnabled = YES;
backimage.image=[UIImage imageNamed:@"popupj.png"];



tab1 = [UIButton buttonWithType:UIButtonTypeCustom];
[tab1 setFrame:CGRectMake(-1,2,293,58)];
[tab1 setTitle:@"Record Video" forState:UIControlStateNormal];
[tab1 addTarget:self action:@selector(tab1Action) forControlEvents:UIControlEventTouchUpInside];
[tab1 setImage:[UIImage imageNamed:@"popuptab1j.png"] forState:UIControlStateNormal];

[backimage addSubview:tab1];

Теперь я добавляю кнопку в imageView, но она не нажимается

Для UIButton вы можете использовать непосредственно функцию кнопки

-(IBAction) imageButtonAction:(id) sender
{
  UITableViewCell *cell = (UITableViewCell *)[[sender superview] superview];
  UIButton *btn = (UIButton *)sender;
  //[btn setimage:[UIImage imagenamed:dimagename];
  UIImageview *backimage = [[UIImageView alloc] initWithFrame:btn.frame];
  [cell addSubview:backimage];
}       
Другие вопросы по тегам