質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

2回答

1658閲覧

TextFieldを追加したTableViewCellの実行時レイアウト制約警告が解決できません

kon_do

総合スコア14

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/03/07 06:25

編集2020/03/08 04:42

前提

Xcodeでswiftを使ったiosアプリ開発を勉強しています。
gitで管理したく、Main.storyboardは使用せずコードで記述しています。

TableViewおよびTableViewCellの使用方法を勉強しており、
TableViewCellにTextFieldを追加し文字を入力できるセルを作成しようとしているのですが、実行時に解決できないレイアウト制約警告が出ており困っています。

該当のソースコード

swift

1import UIKit 2 3class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 4 5 var tableView = UITableView() 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 10 view.addSubview(tableView) 11 tableView.translatesAutoresizingMaskIntoConstraints = false 12 tableView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true 13 tableView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true 14 tableView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true 15 tableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true 16 tableView.delegate = self 17 tableView.dataSource = self 18 } 19 20 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 21 return 2 22 } 23 24 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 25 let cell = UITableViewCell(style: .default, reuseIdentifier: "") 26 27 let textField = UITextField() 28 cell.addSubview(textField) 29 textField.borderStyle = .roundedRect 30 textField.translatesAutoresizingMaskIntoConstraints = false 31 textField.widthAnchor.constraint(equalTo: cell.widthAnchor, multiplier: 0.9).isActive = true 32 textField.heightAnchor.constraint(equalTo: cell.heightAnchor, multiplier: 0.9).isActive = true 33 textField.centerXAnchor.constraint(equalTo: cell.centerXAnchor).isActive = true 34 textField.centerYAnchor.constraint(equalTo: cell.centerYAnchor).isActive = true 35 36 return cell 37 } 38}

※質問のためのコードで内容に意味はありません。

発生している問題・エラーメッセージ

上記のコードでViewControllerを作りデバック実行すると、起動時は何も警告やエラーは出ないのですが、1つめのセルのテキストフィールドを選択し、その後2つめのセルのテキストフィールドを選択すると以下のような警告メッセージが表示されます。たまに警告が出ない時があります。また、デバッグ時の仮想デバイスはハードウェアキーボードをオンにしテキストフィールドを選択するとキーボードが出てくるようにしています。

[LayoutConstraints] Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. ( "<NSLayoutConstraint:0x600001058eb0 'assistantHeight' TUISystemInputAssistantView:0x7faab7f00750.height == 44 (active)>", "<NSLayoutConstraint:0x6000010585a0 'assistantView.bottom' TUISystemInputAssistantView:0x7faab7f00750.bottom == _UIKBCompatInputView:0x7faab7d1e540.top (active)>", "<NSLayoutConstraint:0x600001058550 'assistantView.top' V:|-(0)-[TUISystemInputAssistantView:0x7faab7f00750] (active, names: '|':UIInputSetHostView:0x7faab7e10870 )>", "<NSLayoutConstraint:0x60000102e490 'inputView.top' V:|-(0)-[_UIKBCompatInputView:0x7faab7d1e540] (active, names: '|':UIInputSetHostView:0x7faab7e10870 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x6000010585a0 'assistantView.bottom' TUISystemInputAssistantView:0x7faab7f00750.bottom == _UIKBCompatInputView:0x7faab7d1e540.top (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

この警告メッセージの意味が分からず解決できません。
レイアウト制約がコンフリクトを起こしていると思うのですが自身で設定していない制約が書かれており、どこをどう直せばいいのか分かりません。
原因および解決方法を教えていただきたいです。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

Xcode11.3、シミュレーション実行対象はiphone8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

もしかすると本筋の問題ではないかもですが、、、

UITableViewCellUICollectionViewCell の subview はそれぞれの contentViewaddSubview しましょう。
制約も cell.contentView に対して貼ります。

投稿2021/06/07 13:46

DaichiHayashi

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

WTF
↑たまにお世話になります。

イメージ説明

紫のbottomが橙のtopで紫のtopがベージュのtopで橙のtopがベージュのtop で紫の高さが44?

紫に高さがあったら無理だし、高さの指定が必要ならその他の制約を外してもいいかも。

投稿2020/03/07 18:07

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kon_do

2020/03/08 04:36

ご回答ありがとうございます。 そのサイトは存じており私もよくお世話になっております。 しかしそのサイトで警告の内容を分かりやすくしても、実際に警告の対象であるviewやconstraintは自身で作成、設定したものではないため、どこを修正すればいいのか分かりません。 原因箇所、修正方法などは分かりますでしょうか。
退会済みユーザー

退会済みユーザー

2020/03/08 14:11

張られたコードをコピペして何度か試してみたのですが、ソフトウェアキーボードを表示しましたがエラーが出ませんでした。なんで出ないんだろ。 バグだの何だのという記事がちらほらありますね。 関係ないと思うけど念の為、 Xcode Version 11.3.1 sim iPhone11pro - 13.13
kon_do

2020/03/15 02:07

私の方でも起こる時と起こらない時があり発生条件は明確ではありません。 Appleのバグだとしてこの警告は無視しても大丈夫なのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問