2017-04-07 2 views
2

여기 간단한 예제가 있습니다. 메신저 FirstResponderviewDidLoad에 전화. 그러나 액세서리보기는 화면을 두드린 후에 만 ​​나타납니다. 처음부터 왜 보이지 않습니까?becomeFirstResponder가 viewDidLoad에서 표시되지 않습니다.

class TestViewController: MainPageViewController { 

    private let accessoryView = UIView() //TextInputView() // MessageInputAccessoryView() 

    override var inputAccessoryView: UIView { 
     return accessoryView 
    } 

    override var canBecomeFirstResponder: Bool { return true } 



    override func viewDidLoad() { 
     super.viewDidLoad() 

     accessoryView.backgroundColor = .red 
     accessoryView.frame = CGRect(x: 0, y: 0, width: 300, height: 50) 
     self.becomeFirstResponder() 

     // Do any additional setup after loading the view. 

     let tap = UITapGestureRecognizer(target: self, action: #selector(tappo)) 
     self.view.isUserInteractionEnabled = true 
     self.view.addGestureRecognizer(tap) 

     tappo() 
    } 


    func tappo() { 
     self.becomeFirstResponder() 
    } 


} 
+1

'self.becomeFirstResponder()'대신'accessoryView.becomeFirstResponder()'? – Larme

+0

@Larme Nope. ;/ – HelloimDarius

답변

4

viewWillAppearbecomesFirstResponder를 넣어 더 좋은 장소입니다. 시도해 봐.

+0

그래서 나는 이것을 현재의 프로젝트에서 시도해 보았고 작동하지 않았다. 하지만 샘플 하나를 만들려고했는데 .. 페이지 뷰 컨트롤러를 사용하고 페이지 중 하나가 첫 번째 응답자가되어야하지만 무언가가이를 무시해야합니다 ... 오 .. – HelloimDarius

2

무언가가 내 첫 번째 응답자를 퇴임 시켰습니다 (UIPageViewController을 사용함). 그래서 이것을 내 UIViewControler에 추가했습니다 :

override var canResignFirstResponder: Bool { return false } 

그게 전부입니다. 건배!

관련 문제