Я делаю игру на соответствие в iOS, используя Objective-C есть набор из 12 карт (3 столбца и 4 строки), который представляет собой массив UIButton
, соединенный с IBOutletCollection
, проблема в том, что когда вы нажимаете на первую карту, вы также можете одновременно нажимать на другие карты, но допустимая карта для нажатия должна быть только 2 карты. Как я могу предотвратить касание карт, если повернутых карт больше 1 и меньше 2.
2 ответа
//One action for all buttons
-(void)buttonAction:(UIButton*)button
{
//if user select three button at a time, dont do further operations
if (previousButton && currentButton) {
return;
}
//previous button is the first button
if(previousButton==nil)
{
previousButton=button;
}
//current button is the second button
else if(currentButton==nil)
{
currentButton=button;
}
//if button is selected, set button as not selected and vice versa
if([button isSelected]==NO)
{
[button setSelected:YES];
}
else
{
[button setSelected:NO];
}
//if user press the same button again and again
if (currentButton==previousButton)
{
currentButton=nil;
if([previousButton isSelected]==NO)
{
previousButton=nil;
}
return;
}
else if((currentButton!=previousButton)&&(currentButton!=nil))
{
//both button tags are same, that means both selected state images are same
if(previousButton.tag==currentButton.tag)
{
[self performSelector:@selector(delay) withObject:nil afterDelay:0.5];
}
else
{
[self performSelector:@selector(delayTwo) withObject:nil afterDelay:0.5];
}
}
}
-(void)delay
{
//[currentButton setHidden:YES];
//[previousButton setHidden:YES];
currentButton=nil;
previousButton=nil;
score++;
NSLog(@"Score %d",score);
//the final stage, that means left only two buttons
if(score==6)
{
//[self endGame];
}
}
-(void)delayTwo
{
[currentButton setSelected:NO];
[previousButton setSelected:NO];
currentButton=nil;
previousButton=nil;
}
В viewDidLoad назначьте все выбранные кнопки и изображения или заголовок в обычном состоянии, как вам нужно.
Я не уверен на 100%, к чему вы здесь клоните, но вы можете попробовать создать несколько экземпляров UITapGestureRecognizer. У вас может быть один на 1 нажатие, один на 2 и один на 3+. Таким образом, вы можете выбрать карты для 1 или 2 касаний, но игнорировать это, если их 3 или более.
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.
.userInteractionEnabled = YES/NO