我已经创建了一个应用程序,其中有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部分,它只是从循环中出来那可能是什么问题。请帮我解决这个问题。谢谢
答案 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)
代码也可以稍微清理一下。不确定这是实现这两种方法的理想方式,但无论如何它都可以工作。