Кнопка работает только один раз

У меня есть страница, которая содержит два текстовых поля, 2 метки и кнопку. Когда кнопка нажата, я просто проверяю, не пусты ли поля, и проверяю их. Это нормально работает. Но я могу нажать кнопку только один раз. После этого ничего не изменится, и я не смогу нажимать кнопку или редактировать текстовые поля!

Это мой код:

@IBAction func loginbtn(_ sender: Any) {
    showActivityIndicator(uiView: view)

    emailerrormsg.isHidden=true
    passworderrormsg.isHidden=true

    if emailtf.text == "" && passwordtf.text == "" {
        emailerrormsg.text = "Email is required!"
        emailerrormsg.isHidden = false
        passworderrormsg.text = "Password is required!"
        passworderrormsg.isHidden = false
        stopActivityIndicator()
    }
    else if emailtf.text == ""{
        emailerrormsg.text = "Email is required!"
        emailerrormsg.isHidden = false
        stopActivityIndicator()

    }
    else if !(isValidEmail(testStr: emailtf.text!)){
        emailerrormsg.text = "Please enter a valid email!"
        emailerrormsg.isHidden = false
        stopActivityIndicator()
    }else if passwordtf.text == "" {
        passworderrormsg.text = "Password is required!"
        passworderrormsg.isHidden = false
        stopActivityIndicator()
    }

    else{
        hashedpass = (passwordtf.text!).sha1()
        self.login(email: emailtf.text!, password: hashedpass)
    }
}

Что я делаю неправильно?

    func stopActivityIndicator(){
    DispatchQueue.main.async {
        self.loadingView.isHidden = true
    }
}
func showActivityIndicator(uiView: UIView) {
    let container: UIView = UIView()
    container.frame = uiView.frame
    container.center = uiView.center

    loadingView.frame = CGRect(x: 0,y:  0,width: 80,height: 80)
    loadingView.center = uiView.center
    loadingView.backgroundColor = UIColor(red:0.16, green:0.27, blue:0.60, alpha:1.0)
    loadingView.clipsToBounds = true
    loadingView.layer.cornerRadius = 10

    let actInd: UIActivityIndicatorView = UIActivityIndicatorView()
    actInd.frame = CGRect(x: 0.0,y: 0.0,width: 40.0,height: 40.0);
    actInd.activityIndicatorViewStyle =
        UIActivityIndicatorViewStyle.whiteLarge
    actInd.center = CGPoint(x: loadingView.frame.size.width / 2,y: loadingView.frame.size.height / 2);
    loadingView.addSubview(actInd)
    container.addSubview(loadingView)
    uiView.addSubview(container)
    actInd.startAnimating()
}

Он зависает только тогда, когда ваш адрес электронной почты действителен, или он зависает так во всех случаях?

Nader Besada 05.05.2018 17:57

@NaderBesada во всех случаях

mrs.bassim 05.05.2018 17:59

Что происходит в showActivityIndicator / stopActivityIndicator? возможно, вы не отвечаете на просмотр в методе show, но не отменяете изменение остановки

Puneet Sharma 05.05.2018 18:09

Вы проверили свой инспектор пользовательского интерфейса, есть ли какой-либо вид над кнопкой, принимающей событие?

Aatish Molasi 05.05.2018 18:27

@PuneetSharma только что разместил их в моем сообщении .. пожалуйста, проверьте их

mrs.bassim 05.05.2018 18:54

@AatishMolasi, как это проверить?

mrs.bassim 05.05.2018 18:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы скрываете представление загрузки в методе остановки. Вместо этого скройте представление контейнера. Для этого вам нужно будет сделать просмотр контейнера объектом уровня класса (так же, как вы сделали представление загрузки)

Пожалуйста. Лучше абстрагировать функциональность загрузчика в объект. Таким образом, вы можете повторно использовать его в другом месте своего приложения.

Puneet Sharma 05.05.2018 19:13

не могли бы вы привести мне пример, как это сделать? извините, я новичок в этом

mrs.bassim 05.05.2018 19:29

Другие вопросы по теме