Исправить несколько событий нажатия кнопки в iOS? - PullRequest
0 голосов
/ 24 мая 2018

Есть ли способ предотвратить несколько событий нажатия кнопки.В моем приложении у меня есть сценарий, когда несколько событий кнопки вызываются, когда пользователь постоянно нажимает на кнопку.Даже после добавления индикатора загрузки все равно иногда это происходит.Есть ли общее решение для этого?

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Попробуйте, если вы используете UiButton

@IBAction func tapButton(sender: Any) {
    print("Tap")
    let btn = sender as! UIButton
    btn.isUserInteractionEnabled = false
}

Попробуйте, если вы используете UIBarButtonItem

   leftButton = UIBarButtonItem(image: UIImage(named: "backimage")!, style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.toggleLeft))
    leftButton.title = "Back"

    navigationItem.leftBarButtonItem = leftButton


@objc public func toggleLeft() {
    print("tap")
    leftButton.isEnabled = false
//   self.navigationController?.popViewController(animated: true)
}
0 голосов
/ 30 июня 2018

После опробования различных способов, таких как включение / отключение кнопки и включение / отключение пользовательского интерфейса (что вообще не рекомендуется), я чувствую, что лучше всего использовать переменную "bool" для проверки состояния нажатой кнопки.

`
var isButtonTapped = false
@IBAction func tapButton(sender: Any) {
    print("Tap")
    if(!isButtonTapped){
    //Perform your operations or page navigations. After the navigation operation set the bool value to true.
    isButtonTapped = true;
  }
}`

Убедитесь, что вы сбрасываете значение bool в false при переходе от ViewController.Вы можете сделать это в ViewDidDisappear.

0 голосов
/ 24 мая 2018

когда вы нажимаете на кнопку в методе click, введите код

btnClick.userInteractionEnabled = false;

, он не позволит пользователю больше нажимать кнопку после того, как вы закончили с заданием, добавьте еще одну строку кода, чтобы позволить пользователюнажмите на кнопку

btnClick.userInteractionEnabled = true;
...