0

我创建了一个应用程序,其中有 2 个图像视图,并且我在图像视图上添加了图像。我希望当我点击我的图像时,图像应该被选中并且值应该保存在 sqlite 数据库中。所以我创建了触摸方法,并为两个图像添加标志,以便选择特定图像时,它由其标志标识。这是我的代码:

-(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 部分时,它只是退出了循环。可能会发生什么是问题。请帮我解决这个问题。谢谢

4

2 回答 2

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; 
    }
}
于 2011-04-28T11:20:40.267 回答
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)

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

于 2011-04-28T11:21:35.737 回答