2017-02-22 24 views
2

Я новичок в программировании IOS. Я показываю представление при нажатии кнопки, используя следующий код внутри метода кнопки.IOS - Как скрыть представление, прикоснувшись к нему где-то вне его

@IBAction func moreButton(_ sender: Any) 
    { 
     self.helpView.isHidden = false 
    } 

на начальном этапе, self.helpView.isHidden устанавливается истина в viewDidLoad метод, чтобы скрыть вид. Теперь, как я могу отклонить это мнение, прикоснувшись к любой точке обзора. Из исследования я обнаружил, что это можно сделать, создав прозрачную кнопку, которая подходит для всего viewController. Итак, нажав на кнопку, мы можем сделать вид уволенным. Может ли кто-нибудь дать мне код в swift 3, чтобы создать такую ​​кнопку.

Или, если есть другой лучший способ скрыть представление, это приветствуется.

Я использую Xcode 8.2, стремительные 3.0

Спасибо заранее.

+0

Путь вы читаете должно быть хорошо и легко достаточно, чтобы реализовать, вы также можете переопределить 'touchhesBegan' и проверить, является ли сенсорный вид просмотром или нет/или сравнить положение касания, чтобы скрыть его. – Tj3n

ответ

12

В контакте начала вы должны написать как

override func touchesBegan(_ touches: Set<AnyHashable>, withEvent event: UIEvent) { 
 
    var touch: UITouch? = touches.first 
 
    //location is relative to the current view 
 
    // do something with the touched point 
 
    if touch?.view != yourView { 
 
     yourView.isHidden = true 
 
    } 
 
}

+0

Спасибо. Делая это, helpView не отклоняется, трогая его. как и ожидалось. – Tester

+0

Могу ли я знать точный вопрос –

+0

Я хочу, чтобы helpView уволил меня, только когда мы касаемся снаружи этого вида, а не щелкнув по этому самому виду. Итак, я имел в виду, что этот код работает точно так, как я ожидал. – Tester

2

Вы можете использовать touchesBegan метод для этого:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 

    self.helpView.isHidden = true 
} 
+0

Спасибо за ответ. Оно работает. – Tester

0

Вы можете создать еще одну прозрачную кнопку или, базовый вид (при условии, что это единственный вид ниже кнопки) может затем решить, что вы пытаетесь сделать , Во-первых, вам нужно сделать его доступным. Затем вы хотите обработать логику того, что происходит при нажатии или неиспользовании.

1

Внутри выбран MOREBUTTON, вы можете сделать что-то вроде этого

@IBAction func moreButton(_ sender: Any) 
    { 
     self.helpView.isHidden = false 
     let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissView)) 
     view.addGestureRecognizer(tap) 
    } 

    func dismissView() { 
     self.helpView.isHidden = true 
     self.view.removeGestureRecognizer(tap) 
    } 
+0

Спасибо за ответ. Добавив это, я получаю две ошибки. «Использование неразрешенного идентификатора« tap »и« Type »UIViewController не имеет члена« rejectView ». Я уверен, что добавил все коды, которые вы предложили. Есть ли что-нибудь еще, что я должен сделать? – Tester

+0

Привет. попробуйте ввести view.view. Я думаю, что вы назначили view = ViewController. –

+0

Также объявите «отвод» вне функции. пусть водопроводная: UITapGestureRecognizer = UITapGestureRecognizer (цель: самость, действие: #selector (UIViewController.dismissView)), а затем положить @IBAction Func MOREBUTTON (_ отправителя: Любой) { self.helpView.isHidden = ложь view.addGestureRecognizer (кран) } –

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

  • Нет связанных вопросов^_^