4

メッセージアプリのような振る舞いをしたい。私はこれに対する解決策を求めて Stack Overflow を閲覧してきましたが、実際にはたくさんあります。

キーボードが閉じられた後にinputAccessoryViewを表示したままにする

これは私が見つけたものでした。しかし、 では少し事情が異なるようiOS8です。new で同じことをするとiOS8 sdk、エラーが発生します。

'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<UICompatibilityInputViewController: 0x7fdcb3441b10> should have parent view controller:<ViewController: 0x7fdcb3b1e9f0> but requested parent is:<UIInputWindowController: 0x7fdcb684c000>'

これをさらにテストするために、サンプル プロジェクトを作成しました。下部にビューを持つコントローラーが 1 つだけです。

ViewController コード

絵コンテ

アウトレットは、そのUITextField上にのみある底面図に接続されています。何か不足していますか?どうすれば望ましい動作を得ることができますか?

4

2 に答える 2

2

を複数のスーパービューに追加しているsomeViewため、一貫性のない階層につながります(これはあなたに伝えています)。

キーボードがアクティブになると、inputAccessoryView()メソッドを呼び出して、キーボードの上に何かを貼り付ける必要があるかどうかを確認し、それを独自の superView に追加します。ただし、ストーリーボードを介してビューに既に追加しています。

これを解決するには、次の 2 つの方法があります。

  1. あなた.xibのビューinputAccessoryView()

  2. または、 を使用してコードで完全に作成しNSLayoutConstraintます。

キーボードが非表示の場合でもビューを保持する次のコードを ViewController に追加できます。

override func canBecomeFirstResponder() -> Bool {
    return true
}

例として、この GitHub リポジトリを見てください。

于 2015-03-10T15:57:32.967 に答える
2

iOS8 には、inputAccessoryView による保持サイクルがあります。良い回避策があると思われる良い投稿を次に示します。

http://derpturkey.com/uitextfield-docked-like-ios-messenger/

于 2015-03-17T21:50:39.630 に答える