2015-11-17 4 views
2

У меня есть приложение с некоторыми кнопками, когда эти кнопки нажаты, изображение на них должно измениться. Я предполагаю, что TouchUpInside работает, когда вы нажимаете и удаляете палец, все еще удерживая внутри области элемента, однако он работает редко, и я не уверен, почему.Touch Up Inside не работает должным образом

Причина, по которой я использую TouchUpInside вместо TouchDown, заключается в том, что я хочу, чтобы пользователь мог отменить действие.

Прошу прощения, если я ничего не понял об этих событиях, и если это уже было задано. Я не мог найти ответ на мою проблему в Интернете.

//The IBAction is set to trigger on TouchUpInside 
@IBAction func action11(sender: UIButton) { 
    setTile(sender) 
} 

func setTile(sender: UIButton) { 
    if turn { 
     print("O's turn") 
     sender.setImage(xTile, forState: .Normal) 
     turn = false 
    } 
} 

EDIT: Добавлен необходимый код

+1

напишите свой код. так что это будет легко понять. – Venkat

+1

Пожалуйста, разместите свой код. –

+1

вы можете использовать выделенный или выбранный для изменения во время и после нажатия. –

ответ

0

Есть некоторые свойства UIButtons, которые вы можете использовать, чтобы достичь того, чего вы хотите. Вы можете использовать значение по умолчанию и выбранное состояние uibutton для установки двух разных изображений.

В XIB выберите состояние «По умолчанию» и назначьте изображение по умолчанию этому состоянию, затем выберите состояние «Выбранные» и назначьте изображение, которое вы хотите после раздела кнопки.

и добавить следующую строку в выборе кнопок.

-(IBAction)buttonTapped:(UIButton *)sender{ 
    sender.selected = !sender.selected; 
} 
+0

Да, я планирую использовать значение по умолчанию и выделить его. Однако я думаю, что я просто не совсем понимаю, как это событие работает. Как уже упоминалось, иногда, когда я нажимаю кнопку, меняются, поэтому она действительно работает, просто не все время. Можете ли вы объяснить, как работает «TouchUpInside», если я ошибаюсь? – StevoHN

+0

всякий раз, когда вы нажимаете эту кнопку, это вызовет ibaction, которое связано с touchupinside. Он просто работает как кнопка. Он не изменит состояние кнопки. Вы должны управлять им самостоятельно ... Если вы планируете использовать выделенные, используйте этот sender.highlighted =! Sender.highlighted; – KavyaKavita

0

Ваше понимание правильное, вам необходимо использовать touchUpInside. Я предполагаю, что вы пытаетесь создать кнопку с функцией переключения. Одним нажатием вы хотите, чтобы кнопка имела значение Say «X», и при повторном нажатии кнопка имеет значение «O».

Взгляните на этот код ниже, это должно выполнить эту работу.

class ViewController: UIViewController { 

var isButtonPressed = false{ 
    // Adding a Property Observer, that reacts to changes in button state 
    didSet{ 
     if isButtonPressed{ 
      // Set the Value to X. 

     }else{ 
      // Set the Value to O. 
     } 
    } 
} 

@IBAction func changeButtonValue(sender: UIButton) { 
    // Toggle the button value. 
    isButtonPressed = !isButtonPressed 
} 

} 
+0

Кнопка нажата, она говорит X и не может изменить значение снова. Моя проблема в том, что она не всегда реагирует на то, что ее трогают. – StevoHN

0

Если вы не установили turn=true после первого раза, этот код выполняется он будет выполнен только один.

if turn { 
    print("O's turn") 
    sender.setImage(xTile, forState: .Normal) 
    turn = false 
} 

Проверьте, достаточно ли пуговицы для перемещения пальца. Apple говорит по крайней мере 35x35 пикселей.

+0

Кнопка 100x100, и я убедился, что верну ее позже в коде. – StevoHN

Смежные вопросы