如何在iphone上调用触摸事件中的图像

时间:2011-04-28 11:01:24

标签: iphone objective-c touches

我已经创建了一个应用程序,其中有2个图像视图,我在图像视图上添加了图像。当我点击我的图像时,图像应该被选中,值应该保存在sqlite数据库中。所以我已创建了touches方法,并为这两个图像添加了标记,因此当选择特定图像时,它会通过其标志进行标识。 这是我的代码:

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    UITouch *touch = [[event allTouches] anyObject];

    CGPoint location= [touch locationInView:self.view];

    if(CGRectContainsPoint(firstImage.frame, location)) 
    {
        //set some flag like
        select=1;        
    }
    else if(CGRectContainsPoint(secImage.frame, location))
    {
        select=2;        
    }
    [mComment resignFirstResponder];

}         

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch  *touch = [[event allTouches] anyObject]; 
    CGPoint location = [touch locationInView:self.view];


    if(CGRectContainsPoint(firstImage.frame, location)) {   
        if(select==1) {

            var=1;
        }
         else if(CGRectContainsPoint(secImage.frame, location))  { 

            if(select==2) {
                vars=2;
            }
            select=0; 
        }
    }
}

但是我有一个问题,当我选择我的第一个图像时它正确进入if部分并将值1存储到var 1中但是当我点击secimage时它不会进入elseif部分,它只是从循环中出来那可能是什么问题。请帮我解决这个问题。谢谢

2 个答案:

答案 0 :(得分:0)

可能是你的代码出错了?试试这个

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 

    UITouch  *touch = [[event allTouches] anyObject]; 
    CGPoint location = [touch locationInView:self.view];

    if(CGRectContainsPoint(firstImage.frame, location)) {   
        if(select==1)
        {
            var=1;
        }
    }
    else if(CGRectContainsPoint(secImage.frame, location))
    { 
        if(select==2)
        {
            vars=2;
        }
        select=0; 
    }
}

答案 1 :(得分:0)

以下更改应解决问题:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    UITouch  *touch = [[event allTouches] anyObject]; 
    CGPoint location = [touch locationInView:self.view];


    if(CGRectContainsPoint(firstImage.frame, location)) {   
        if(select==1) {

            var=1;
        }}
    if(CGRectContainsPoint(secImage.frame, location))  { 

        if(select==2) {
            vars=2;
        }}
    select=0; 
}

您的上述代码无效,因为if(CGRectContainsPoint(firstImage.frame, location) == YES,它永远不会到达if(CGRectContainsPoint(secImage.frame, location)

代码也可以稍微清理一下。不确定这是实现这两种方法的理想方式,但无论如何它都可以工作。