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

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

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

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

クラッシュ

クラッシュ(crash)はプログラムを完全に停止させてしまう修復不可能なエラー結果を指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

1785閲覧

CordovaのiPhoneアプリでモーダルを開いて、閉じるとでクラッシュする

h_naga

総合スコア4

Cordova

Cordovaは様々なデバイスで使うことができるオープンソースなモバイル用開発プラットフォームです。開発者に各デバイスの元のプラットフォームで開発する必要をなくし、HTML・JavaScript・CSSなどの一般的なウェブのテクノロジーを使ってすべてのデバイスで展開することができるモバイルのアプリケーションを生成することを可能にします。

クラッシュ

クラッシュ(crash)はプログラムを完全に停止させてしまう修復不可能なエラー結果を指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2020/03/21 08:56

CordovaでiPhone向けのアプリを作成しております。
フロントはjQueryMobile 1.4.2を使用して、作成しております。
jQueryMobileのdata-role="popup"属性を付与して、モーダル表示した画面上にあるinput要素がある画面を作成している際に、iPhone11 Pro Maxでinput要素にカーソルを当ててキーボードが表示されたタイミングで以下のエラーが発生し、入力後モーダルを閉じるとアプリがクラッシュしてしまいます。
他のバージョンのiPhoneでは、同様のエラーログは出力されますが、クラッシュまではせず、またMac上のシミュレーターでも現象が再現しません。
根本的な解決方法をいろいろと調べてみておりますが、具体的に解決に至っておりません。
以下の現象と解決方法をご存じの方はいらっしゃいませんでしょうか?

コンソール上に出力されたエラーメッセージ

API error: <_UIKBCompatInputView: 0x103eaa600; frame = (0 0; 0 0); layer = <CALayer: 0x28057b380>> returned 0 width, assuming UIViewNoIntrinsicMetric API error: <_UIKBCompatInputView: 0x103eaa600; frame = (0 0; 0 0); layer = <CALayer: 0x28057b380>> returned 0 width, assuming UIViewNoIntrinsicMetric [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. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) ( "<NSAutoresizingMaskLayoutConstraint:0x28267c870 h=--& v=--& _UIToolbarContentView:0x103e45840.width == 0 (active)>", "<NSLayoutConstraint:0x2826b4690 H:|-(0)-[_UIButtonBarStackView:0x103e52760] (active, names: '|':_UIToolbarContentView:0x103e45840 )>", "<NSLayoutConstraint:0x2826b46e0 _UIButtonBarStackView:0x103e52760.trailing == _UIToolbarContentView:0x103e45840.trailing (active)>", "<NSLayoutConstraint:0x28267a170 'IB_Leading_Leading' H:|-(0)-[_UIModernBarButton:0x114e255f0] (active, names: '|':_UIButtonBarButton:0x114e250e0 )>", "<NSLayoutConstraint:0x28267ac10 'IB_Leading_Leading' H:|-(>=5)-[_UIModernBarButton:0x114e270a0] (active, names: '|':_UIButtonBarButton:0x114e26cc0 )>", "<NSLayoutConstraint:0x28267a1c0 'IB_Trailing_Trailing' H:[_UIModernBarButton:0x114e255f0]-(>=8)-| (active, names: '|':_UIButtonBarButton:0x114e250e0 )>", "<NSLayoutConstraint:0x28267ac60 'IB_Trailing_Trailing' H:[_UIModernBarButton:0x114e270a0]-(>=5)-| (active, names: '|':_UIButtonBarButton:0x114e26cc0 )>", "<NSLayoutConstraint:0x28267b890 'TB_Leading_Leading' H:|-(8)-[_UIModernBarButton:0x114e288b0'Done'] (active, names: '|':_UIButtonBarButton:0x114e27b40 )>", "<NSLayoutConstraint:0x28267b8e0 'TB_Trailing_Trailing' H:[_UIModernBarButton:0x114e288b0'Done']-(0)-| (active, names: '|':_UIButtonBarButton:0x114e27b40 )>", "<NSLayoutConstraint:0x28267bca0 'UISV-canvas-connection' UILayoutGuide:0x283cead80'UIViewLayoutMarginsGuide'.leading == _UIButtonBarButton:0x114e250e0.leading (active)>", "<NSLayoutConstraint:0x28267bf20 'UISV-canvas-connection' UILayoutGuide:0x283cead80'UIViewLayoutMarginsGuide'.trailing == _UIButtonBarButton:0x114e27b40.trailing (active)>", "<NSLayoutConstraint:0x28267bf70 'UISV-spacing' H:[_UIButtonBarButton:0x114e250e0]-(0)-[UIView:0x114e26470] (active)>", "<NSLayoutConstraint:0x2826b45f0 'UISV-spacing' H:[UIView:0x114e26470]-(0)-[_UIButtonBarButton:0x114e26cc0] (active)>", "<NSLayoutConstraint:0x28267c000 'UISV-spacing' H:[_UIButtonBarButton:0x114e26cc0]-(0)-[UIView:0x114e274f0] (active)>", "<NSLayoutConstraint:0x28267c050 'UISV-spacing' H:[UIView:0x114e274f0]-(0)-[_UIButtonBarButton:0x114e27b40] (active)>", "<NSLayoutConstraint:0x2826b4500 'UIView-leftMargin-guide-constraint' H:|-(0)-[UILayoutGuide:0x283cead80'UIViewLayoutMarginsGuide'](LTR) (active, names: '|':_UIButtonBarStackView:0x103e52760 )>", "<NSLayoutConstraint:0x2826b45a0 'UIView-rightMargin-guide-constraint' H:[UILayoutGuide:0x283cead80'UIViewLayoutMarginsGuide']-(0)-|(LTR) (active, names: '|':_UIButtonBarStackView:0x103e52760 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x28267a1c0 'IB_Trailing_Trailing' H:[_UIModernBarButton:0x114e255f0]-(>=8)-| (active, names: '|':_UIButtonBarButton:0x114e250e0 )> 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.

フロント画面のソース

HTML

1<div data-role="popup" data-position-to="window" data-overlay-theme="b" data-theme="a" id="dv_add_form" class="dv_form_box"> 2 <div data-role="header" class="ui-corner-top"> 3 <a id="add_form_close" class="ui-btn ui-corner-all ui-icon-delete ui-btn-icon-notext ui-btn-right"></a> 4 <h1>商品追加</h1> 5 </div> 6 <div data-role="content"> 7 <div class="dv_order_table_box"> 8 <table width="100%" border="0" cellspacing="0" border-collapse="collapse" text-align="center" class="tbl_table_design_01" style="table-layout: fixed;"> 9 <tr> 10 <th class="th_size_30">商品名</th> 11 <td> 12 <input type="text" name="model.itemInfo.itemname1" value="" id="txt_new_item_name" maxlength="40" oninput="maxLengthCheck(this)" data-length="40" placeholder="商品名入力" data-clear-btn="true"/> 13 <input type="hidden" name="model.itemInfo.itemname2" value="" id="ordering_model_item_info_item_name_2"/> 14 </td> 15 </tr> 16 <tr> 17 <th class="th_size_30">規格</th> 18 <td id="select_element"> 19 <select name="model.itemInfo.delivernumberunit" id="sel_gds_unit_value"> 20 <option value="0" id="option_default" selected="selected">未指定</option> 21 </select> 22 </td> 23 </tr> 24 <tr> 25 <th class="th_size_30">数量</th> 26 <td> 27 <input type="number" name="model.itemInfo.orderNumber" maxlength="11" oninput="maxLengthCheck(this)" id="num_order_number_new" min="0" placeholder="数量入力" data-clear-btn="true"/> 28 </td> 29 </tr> 30 </table> 31 <a id="submitAdd" data-role="button" data-ajax="false" >OK</a> 32 </div> 33 </div> 34</div>

JavaScript

1$("#submitAdd").on('click', function (e) { 2 e.preventDefault(); 3 4 var new_item_name = $.trim($("#txt_new_item_name").val()); 5 var new_item_unit = $("#sel_gds_unit_value").val(); 6 var new_item_number = $.trim($("#num_order_number_new").val()); 7 var new_item_unit_name = getCdName(list_cd_3, new_item_unit); 8 var k = ctmer_item_list.item_list.length; 9 10 if (!validatePopupAddNewItem()) { 11 return false; 12 } 13 14 var html_li_item = $( 15 '<li data-icon="delete" class="ui-li-has-alt ui-li-has-count">' 16 ); 17 var html_list_item = 18 '<a href="#dv_form" data-rel="popup" id="a_item_row_' + k + 19 '" class="a_item_row ui-btn" aria-haspopup="true" ' + 20 'aria-owns="dv_form" aria-expanded="false">' + 21 '<h2 class="h2_data_good_name" align="left" id="h2_item_name_' + 22 k + '">' + new_item_name + '</h2>' + '<span class="ui-li-count' + 23 ' ui-body-inherit" align="left" id="sp_order_number_' + k + '">' 24 + new_item_number + '</span>' + 25 '<p class="ui-li-aside" id="p_item_cd_' + k + '">' + 26 new_item_unit_name + '</p>' + '</a><a href="#dv_dialog" ' + 27 'data-rel="popup" data-role="button" data-inline="true" ' + 28 'id="a_cancel_row_' + k + '" class="a_order_cancel ui-btn ' + 29 'ui-btn-inline ui-shadow ui-corner-all ui-btn-icon-notext ' + 30 'ui-icon-delete" aria-haspopup="true" aria-owns="dv_dialog" ' + 31 'aria-expanded="false" role="button" title="取消"></a>'; 32 html_li_item.append(html_list_item).data({ 33 name: new_item_name, 34 unit: new_item_unit_name, 35 number: new_item_number 36 }); 37 $('#main ul.ul_order_list #li_good_title').after(html_li_item); 38 ctmer_item_list.item_list.push({ 39 item_number: new_item_number, 40 deliver_unit_name: new_item_unit_name, 41 deliver_unit: new_item_unit, 42 deliver_number_unit: new_item_unit, 43 item_name1: new_item_name, 44 free_item: 1 45 }); 46 $('#dv_add_form').popup('close'); 47 $('#dv_form').popup({ 48 afterclose: function (event, ui) { 49 $("#txt_new_item_name").val(''); 50 $("#sel_gds_unit_value").val(''); 51 $("#num_order_number_new").val(''); 52 $('#select_element').find('span').first().text('未指定'); 53 $('#sel_gds_unit_value').find('option').remove().end() 54 .append('<option value="0" id="option_default" selected="selected">未指定</option>').val('0'); 55 addHtmlCdNameList(list_cd_3, $('#sel_gds_unit_value')); 56 } 57 }); 58}); 59 60$('#add_form_close').on('click', function(e){ 61 e.preventDefault(); 62 $('#dv_add_form').popup('close'); 63});

使用している言語

HTML5 + CSS3
JavaScript + JQuery 1.10.2(JQuery Mobile 1.4.2) + Cordova 7.0.1

試したこと

・コンパイルを行っているMac端末のXCodeが最新ではなかったため、XCode自体のバージョンアップを実施。
・エラー内容を調査している際に、同様の現象が発生している方のサイトを見つけ、使用しているcordova-plugin-keybordのバージョンを最新バージョンにバージョンアップ。
・aタグのhref属性とonClickイベントが同居していたため、event.preventDefaultによりイベント処理を明示的に処理させないように改修を実施。

補足情報

使用しているXCodeのバージョンは、11.3.1です。

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

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

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

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

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

guest

回答1

0

自己解決

##自己解決致しました
cordova-plugin-keybordのkeybord.hideを追加することで自己解決致しました。

投稿2020/03/30 01:26

h_naga

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問