2016-08-26 21 views
-2

Xcode 8ベータ6のストーリーボードからカスタムキーボードを設計する際に問題が発生します。
iOS 10デバイスでキーボードを起動すると何らかの理由でこれが発生します。 enter image description here

これは私がストーリーボード、トップビューでそれを設計する方法である:
enter image description here

底面図:enter image description hereカスタムキーボードストーリーボード(Xcode 8ベータ版)



だから、それだけで時間を表示しますボトムビューの8つ。
iOS 9にこの問題はありません。
何が問題になっているかに関するアイデアはありますか?

UPDATE
それはキーボードがiOSの9にロードされる方法です。この:
enter image description here

UPDATE 2:
でもビューを作成するプログラムで、このようでのviewDidLoad()「 doesnのt仕事:

self.view.backgroundColor = UIColor.orange 

let bottomView = UIView() 

bottomView.backgroundColor = UIColor.blue 

self.view.addSubview(bottomView) 

bottomView.translatesAutoresizingMaskIntoConstraints = false 

let trailing = bottomView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor) 
let leading = bottomView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor) 
let bottom = bottomView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -50) 
let top = bottomView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 0) 

NSLayoutConstraint.activate([trailing, leading, bottom, top]) 

私は書いたリンゴのバグ報告。
彼らからのニュースを入手したいと思っています

+0

人は質問を投票していません。彼らはなぜ彼らがそれをやっているコメントに書き込めますか? – Danny182

答えて

2

私はこの同じ問題がありました。私はあなたがそれがキーボードの残りのスペースをいっぱいにしたいので、緑のブロックに高さを設定していないと仮定します。キーボードを一定の高さにしたい場合は、緑のブロックに高さの制約を設定するだけで済みますが、画面のサイズと向きのために、すべての高さを1つにする必要はないでしょう。

iOS 9では、カスタムキーボードのデフォルトサイズはシステムキーボードと同じでした。したがって、iOS 9でこれを実行すると、残りの領域が緑色のブロックで塗りつぶされます。何らかの理由でiOS 10にデフォルトの高さがなく、あなたの緑のブロックに高さの制約がないため、高さはゼロだと思います。

これを修正するには、キーボードの高さを設定する必要があります。これは私がそれを扱うために書いたコードです(これまでのところ良いです)。これをViewDidLoadの前にkeyboardviewcontrollerクラスに配置してください。

//*************************** 

//create constraint variable before function 
var constraint = NSLayoutConstraint() 

//function to set height 
func setKeyboardHeight() { 
    let screenSize = UIScreen.mainScreen().bounds.size 
    let screenH = screenSize.height; 

    self.view.removeConstraint(constraint) 

    //you can set the values below as needed for your keyboard 
    if screenH >= 768 { 
     //for iPad landscape or portrait 
     self.constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 300.0) 
     self.view.addConstraint(self.constraint) 

    } else if screenH >= 414 { 
     //for iPhone portrait AND iPhone Plus landscape or portrait 
     self.constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 220.0) 
     self.view.addConstraint(self.constraint) 

    } else { 
     //for iPhone landscape 
     self.constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 140.0) 
     self.view.addConstraint(self.constraint) 
    } 
} 

//sets height when keyboard loads 
override func updateViewConstraints() { 
    super.updateViewConstraints() 
    // Add custom view sizing constraints here 
    setKeyboardHeight() 
} 

//sets or changes height when device rotates 
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 
    setKeyboardHeight() 
} 

//*************************** 
+0

ありがとうございます。私は可能な限り早くこれを試みます。説明は正しいことを言っているようです。 – Danny182

0

問題について何か不明な点がある場合は教えてください。追加情報が必要な場合はコメントを使用し、回答を更新します。

ボトムビューを展開する場合は、トップビューのコンテンツ圧縮抵抗優先度を下げることをお勧めします。あなたがtopViewとbottomViewの間の比例した間隔を維持したいのかどうかは、あなたの質問ではっきりしていません。

シミュレータまたはデバイスでアプリケーションを実行し、ビューのデバッグを有効にして、topViewに何が起きているのかを調べることができます。ほとんどの場合、サイズがゼロであるか、予期しないビューの後ろに隠れている可能性があります。ビューのデバッグ中に、そのビューをクリックしてそのアウトラインを表示したいとします。予期しない方法でビューに影響を与える可能性があるものを特定できるように、制約を表示するオプションもあります。

+0

私はキーボードのビューをデバッグするのではない。私は "Debug View Hierarchy"に行きますが、 "View hierarchyを取得できません"というメッセージを受け取ります。なぜTopViewがTopに展開されないのか分かりません。私はあなたが見ることができるように制約を設定します。 – Danny182

+0

Xcode 8とiOS 9にはこの問題はありません。 – Danny182

関連する問題