2016-07-25 4 views
1

Я знаю, как уволить клавиатуры, я использую это расширение:Как убрать клавиатуру, вызванную текстовым полем в панели навигации?

extension UIViewController 
{ 
    func hideKeyboardWhenTappedAround() 
    { 
     let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
     view.addGestureRecognizer(tap) 
    } 

    func dismissKeyboard() 
    { 
     view.endEditing(true) 
    } 
} 

И называется hideKeyboardWhenTappedAround в viewDidLoad

Но моя проблема сейчас я добавил UITextField к navigationBar, и больше это расширение не работает !

Это, как я добавил UITextField:

let textField = UITextField(frame: CGRectMake(0,0,textfieldW,0.8*ram.navigationBarHeight)) 
    textField.borderStyle = UITextBorderStyle.RoundedRect 
    textField.center.y = centerView.center.y 
    centerView.addSubview(textField) 
    self.navigationItem.titleView = centerView 

Как уволить клавиатуры принес из UITextField, что таится в панели навигации?

enter image description here

+0

Ваше мнение содержит TableView или Scrollview или UIView –

ответ

1

Сделать ссылку на это текстовое поле, как:

var navigationBarField : UITextField? 

Затем инициализировать его:

navigationBarField = UITextField(frame: CGRectMake(0,0,textfieldW,0.8*ram.navigationBarHeight)) 
textField.borderStyle = UITextBorderStyle.RoundedRect 
textField.center.y = centerView.center.y 
centerView.addSubview(navigationBarField) 
self.navigationItem.titleView = centerView 

И если вы хотите, чтобы удалить клавиатуру вызова:

navigationBarField?.resignFirstResponder() 
+0

работал, спасибо. – DeyaEldeen

1

Вместо того, чтобы объявить экземпляр вам просто нужно вызвать endEditing метод navigationController'sview также как этот

func dismissKeyboard() 
{ 
    navigationController?.view.endEditing(true) 
    view.endEditing(true) 
} 
Смежные вопросы