2017-01-18 14 views
2

У меня есть эта структура:Как убрать клавиатуру при касании вне текстового поля?

ViewController 
    | 
    MainView <-- Give a Tap value =1 
    | 
    ScrollView 
    | 
    View <-- give a Tag value =2 
     | 
    another View use to contain textFields <-- give a tap value =3 

The View имеет такую ​​же ширину, как и Scrollview MainView.

Ширина «Другой вид» не такая же, как «Вид». В «другом представлении» у меня есть несколько текстовых полей.

Проблема: коснувшись вида или вне текстового поля, клавиатура не будет удалена.

У меня есть это для клавиатуры, но это не сработало.

override func toucheBegan(touches: Set<UITouch>, withEvent event:UiEvent?){ 

     if (view.tag == 1) { 

      //- this refer to main view 
      view.endEditing(true) 

     } else { 

     //- this refer to the other view. 
     view.endEditing(true) 

     } 

--Upate:<br/> 

    override func toucheBegan(touches: Set<UITouch>, withEvent event:UiEvent?){ 

     self.view.endEditing(true) // with or without self 

} 
+0

Вы не проверяете правильный тег. Вы проверяете основной тег вида –

+0

Установили ли вы userInteractionEnabled в представлении? – SeanLintern88

+0

Должен ли я помещать значение тега для каждого вида (Main View, View, другой вид)? Как указать, какой из них можно было бы коснуться на экране «Вид», а другой вид - только в том случае, если «Основной вид» находится за представлением. настроили UserInteractionEnabled для 3 просмотров. – MilkBottle

ответ

6

Попробуйте сильфона код скрывает клавиатуру, когда пользователь касается зрения UIViewController, код в стремительной 3.0, надеюсь, это поможет вам.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
    self.view.endEditing(true) //This will hide the keyboard 
} 

Или же вы должны установить uitapgesturerecognizer для этой конкретной точки зрения, или вы можете сделать это вид UIControl и установить touchupinside событие, Все, что вам нужно сделать, это вызов self.view.endEditing (истина) какой-либо из выше предмет.

+0

1-й вариант не работает с помощью touchBegan. Зачем? Как сделать второй вариант? – MilkBottle

+0

@MilkBottle Добавить uitapgesturerecognizer в представление, откуда вы хотите скрыть клавиатуру при касании. и добавьте self.view.endEditing (true) к функции, которую вы установили на tapgesturere –