2016-08-22 2 views
1

tabview를 사용하고 있지만 잘 작동합니다. 그러나 키보드를 없애기 위해 코드를 추가하면 탭바는 작동하지 않지만 다른 모든 버튼은 작동합니다. 여기에 내가 키보드를 기각하는 데 사용되는 코드입니다 :키보드가 탭바에서 보이지 않게 보이게합니다.

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

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

}

답변

0

난이이 문제를 해결할 수있는 가장 좋은 방법입니다 확실하지 않다,하지만 experiementing없이,이 유일한 절대 안전한 방법 나는 것 같다 에 대해 알다. 그러면 클릭을 인식하고 클릭시 자체를 삭제하는 보이지 않는보기가 생성됩니다.

class ThisViewController: UITableViewDelegate, UITableViewDatasource { 

    var tapView: ClickThroughView? 

    override func viewDidAppear(animated: Bool) { 
     super.viewDidAppear(animated) 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.keyboardWillShow), name: UIKeyboardWillShowNotification, object: nil) 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.keyboardWillHide), name: UIKeyboardWillHideNotification, object: nil) 
    } 

    func keyboardWillShow(notification: NSNotification) { 
     tapView = ClickThroughView(frame: view.frame) 
     tapView?.delegate = self 
     view.addSubview(tapView!) 
     view.bringSubviewToFront(tapView!) 
    } 

    func keyboardWillHide() { 
    } 

    deinit { 
     NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) 
     NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil) 
    } 
} 

extension ThisViewController: HandleViewTapDelegate { 
    func handleTap() { 

     //code on tap not on keyboard 
     view.endEditing(true) 

     tapView?.removeFromSuperview() 
     tapView = nil 
    } 
} 

protocol HandleViewTapDelegate { 
    func handleTap() 
} 

class ClickThroughView: UIView { 
    var delegate: HandleViewTapDelegate? 

    override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool { 
     delegate?.handleTap() 
     return false 
    } 
} 
0

나는 그것이 배경에 버튼을 넣고 그것은 예쁜 수정하지 view.endEditing(true) 그 버튼 호출에 대한 작업을 고정하지만

를 작동
관련 문제