2016-12-14 5 views
0

いいえ、アクセサリとして使用しているツールバーがあるので、キーボードが表示されたときにのみ表示されます。私はこれを行うことによってそのビットが働いています。その作業をテストするボタン上でTextFieldをアクティブにする

@IBOutlet var toolBar: UIToolbar! 
@IBOutlet weak var playerInput: UITextField! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    playerInput.delegate = self 
    playerInput.inputAccessoryView = toolBar 
} 

、私はどこかのビューで、一時的なTextFieldを行い、playerInputとしてそれを接続します。しかし、それは私のデザインが最終的に求めているものではありません。私は、アクセサリーとして使用されているツールバー上にあるtextFieldを必要とし、キーボード、ツールバーを表示してフォーカスを持っているようにユーザーが触ったようにtextFieldを選択するナビゲーションバーにボタンを持っています。

私のボタンの機能@IBAction func addButton(){}は、ユーザーがtextFieldに触れたように動作することができるので、キーボードが表示され、ツールバーが表示されますか?

編集:@IBAction機能にplayerInput.becomeFirstResponder()を追加すると、何も起こりません。私のiPhone 6sやiPhone Simulatorでこれを実行すると、ボタンを押すことは何もしません。ボタンが機能していることを確認するためにコンソールプリントを追加すると、ボタンが機能していることが分かります。

EDIT 2:OKですので、私は何かが起こるように非常に恐ろしい回避策を持っています。私はメインのビューに2番目のtextFieldを追加し、それを隠しました。その後、私のツールバーアクセサリビューを新しい隠しテキストフィールドに設定します。ボタンを押すと、最初のレスポンダとして隠されたtextFieldが呼び出され、実際のtextFieldを持つツールバーがアタッチされます。次に、ユーザは、実際のテキストフィールドを選択し、そのエントリを適切に保存することができる。それは今のところすべて機能しています。唯一の問題は、ユーザーがスワイプでキーボードを閉じると、ベイボードが再び表示され、スワイプしてもう一度閉じてしまうことです。

答えて

1

はい、これはplayerInput.becomeFirstResponder()で実現できます。

+0

残念ながら、これを私のボタン機能に追加し、シミュレータまたはiPhone 6sで実行しても、何も起こりません。ボタンは押されて強調表示され、 'print(" Button pressed ")'を追加するとコンソールにも印刷されます。 – kingfoot

+0

シミュレータでソフトウェアキーボードを有効にしてもよろしいですか?シミュレータ>ハードウェア>キーボード>ソフトウェアキーボードを切り替えます。 – Connor

+0

はい。私が言ったように、シミュレータと私の実際のiPhone 6は、ボタンが押されたときに何もしません。 – kingfoot

関連する問題