簡體   English   中英

如何在iphone中的觸摸事件上調用圖像

[英]how to call image on touch event in iphone

我創建了一個應用程序,其中有 2 個圖像視圖,並且我在圖像視圖上添加了圖像。我希望當我單擊我的圖像時,圖像應該被選中並且值應該保存在 sqlite 數據庫中。所以我創建了touches method,and added flags for both the images so when particular image is selected it is identified by its flag. 這是我的代碼:

-(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; 
        }
    }
}

但是我遇到了一個問題,當我 select 我的第一個圖像正確進入 if 部分並將值 1 存儲到 var 1 但是當我單擊 secimage 它沒有進入 elseif 部分時,它只是退出了循環。可能會發生什么是問題。請幫我解決這個問題。謝謝

可能是您的代碼有錯誤? 嘗試這個

- (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; 
    }
}

以下更改應該可以解決問題:

- (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)

代碼也可以稍微清理一下。 不確定這是實現這兩種方法的理想方式,但無論如何它都可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM