Изменение изображения на TouchesBegan - PullRequest
0 голосов
/ 11 апреля 2011

Эй, я пытаюсь изменить изображение, когда пользователь касается ImageView.На данный момент ImageView имеет изображение «heart1.png», поэтому, когда я касаюсь ImageViewer на экране, оно меняется на «heart2.png», это мой код, помощь очень ценится:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint location = [touch locationInView:self.view];
    if (location.x >= imageView.frame.origin.x && location.x <= imageView.frame.origin.x + imageView.frame.size.height && location.y >= imageView.frame.origin.y && location.y <= imageView.frame.origin.y + imageView.frame.size.height) {
        imageView.image = [UIImage imageNamed:@"heart2.png"];
    }    
}

Ответы [ 4 ]

0 голосов
/ 17 мая 2012

Нет необходимости искать местоположение view, вам не нужно делать ход UIImageView.Просто сделайте это:

-(void)viewDidLoad 
{
    // imageView is your UIImageView
    imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0)];
    [imageView setImage:[UIImage imageNamed:@"heart1.png"]];
    [imageView setUserInteractionEnabled:YES];

    // Make sure userInteractionEnable is set to be YES; otherwise the touch event will be happen on UIView not on ImageView;
   [self.view addSubview:imageView];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    UITouch *touch = [[event allTouches]anyObject];
    if([touch view]==imageView)
        [imageView setImage:[UIImage imageNamed:@"heart2.png"]];
}
0 голосов
/ 11 апреля 2011

Вместо того, чтобы дурачиться с проверкой координат относительно ограничивающего прямоугольника, почему бы вам не упростить вещи, используя построение интерфейса для размещения пользовательской (то есть невидимой) кнопки UIB прямо над изображением? Затем вы можете подключить touchesUpInside к методу IBAction. Тогда не будет неловко, если в вашем коде есть заявления, и меньше шансов на такие ошибки.

0 голосов
/ 12 апреля 2011

Попробуйте вместо этого использовать UIButton.

[button setImage:[UIImage imageNamed:@"heart1.png"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"heart2.png"] forState:UIControlStateHighlighted];
0 голосов
/ 11 апреля 2011

Для меня это выглядит проблемой:

if (location.x> = imageView.frame.origin.x && location.x <= imageView.frame.origin.x + imageView.frame.size. <strong>-> высота <- </strong>

там должна быть ширина, наверное:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...