iOS затрагивает начало проблемы
У меня есть NSArray с 15 UIImageViews:
@interface ViewController : UIViewController{
NSArray *ArrayImages1;
NSArray *ArrayImages2;
}
в viewDidLoad:
ArrayImages1 = [[NSArray alloc] initWithObjects: a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, nil];
Где a1, a2... выходы UIImageViews И то же самое для ArrayImages2
Прикосновения Беган и Прикосновения Переместились:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
UIImageView *posible;
int imagen;
if (point.x < 161) {
imagen = Contador1;
if (Contador1 > 14) {imagen = Contador1 - 15;}
imagen--;
posible = [ArrayImages1 objectAtIndex:imagen];
}
else if (point.x > 159) {
imagen = Contador2;
if (Contador2 > 14) {imagen = Contador2 - 15;}
imagen--;
posible = [ArrayImages2 objectAtIndex:imagen];
}
if ([touch view] != posible) { return; }
original2 = posible.center;
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
UIImageView *posible;
int imagen;
if (point.x < 161) {
imagen = Contador1;
if (Contador1 > 14) {imagen = Contador1 - 15;}
imagen--;
posible = [ArrayImages1 objectAtIndex:imagen];
}
else if (point.x > 159) {
imagen = Contador2;
if (Contador2 > 14) {imagen = Contador2 - 15;}
imagen--;
posible = [ArrayImages2 objectAtIndex:imagen];
}
if ([touch view] != posible) { return; }
posible.center = point;
}
Я должен знать, было ли касание в одном из двух возможных UIImageViews, и если это было, переместите его. Интенты Contador1 и Contador2 - это счетчики, которые подсчитывают, сколько видимых UIImageView, пользователь может перемещать только последние 2 из них.
Это работает, дело в том, что когда я касаюсь снаружи, это приводит к сбою приложения. Если я изменяю в touchesBegan и TouchesMoved, индекс "posible = [ArrayImage..", для 0, он работает только для первого UIImageView (я понимаю, почему), но это до сих пор не дает сбоя.
Есть идеи?
1 ответ
Я должен знать, было ли касание в одном из двух возможных UIImageViews
Я не очень хорошо следую вашему коду, но кажется, что вы могли бы упростить вещи, если сначала проверите, находится ли точка внутри прямоугольника представления. Затем основывайте свою логику на результате. Что-то вроде
Использование CGRectContainsPoint:
bool CGRectContainsPoint (
CGRect rect,
CGPoint point
);
UIImageView *foundView
for(UIImageView* theView in ArrayImages1){
if (CGRectContainsPoint(theView.frame, touchPoint){
foundView = theView;
break;
}
}
Затем...
if (foundView != nil){
// do some logical thing
}
Или же...
if ([foundView isEqual:someOtherView]){
// I may have the syntax wrong on the above
}