5

に次の div がありますUIWebView

<div contenteditable="true"></div>

ユーザーが (ビジュアル キーボードのリターン キーを使用して) 新しい行を挿入し、完了したら、前/次/完了の灰色のビジュアル キーボードで [完了] をクリックすると、行が 1 行に結合されます。

どうすれば回避できますか?

編集中 クリックしたら完了

4

2 に答える 2

2

おそらく、このJSFiddleは、アプリケーション内で何が起こっているのかを明らかにすることができます。上部のDIV(灰色の背景色)にいくつかの行を入力すると、そのinnerHTMLプロパティの戻り値として取得したHTMLコードが、最初にそのtextarea下のフィールドに表示されます(HTMLタグのフォーマットを含む)。すぐにわかるように、これはアプリケーションで処理することを期待するだけでなく('1行目'+ CRLF +'2行目'...)、行を互いに分離するHTML要素も含まれています。これがブラウザが表示できる方法ですcontenteditableDIVは、まるで「メモ」タイプのコントロールであるかのように、HTMLを解析することによって(ブラウザが行うことです)。このHTML形式のテキストは、アプリケーションがユーザーから送信されたテキストを受け取る方法でもあり、そこでこの形式をどうするかを決定する必要があります。それらを取り除く(つまり、オブジェクトのプロパティをどのように設定し、それを処理するか)などのHTML要素を<DIV></DIV>スペース文字に置き換えるか、(コントロールのプロパティまたはコードで)選択することができます。 )このフォーマットを処理する方法を選択します。私はよく知らないのでUIWebView、表示している次のDIV要素(または新しく割り当てたものと同じもの)に適用する完全なHTML形式の値を取得する方法を自分で見つける必要があります値)。

更新:参照用にWebを検索した後、SOで関連するスレッドUIWebViewを実際に見つけました。これは、基になるHTMLドキュメント内の要素のinnerHTML値を取得する方法を示しています。

//where 'wView' is your UIWebView

NSString *webText = [wView stringByEvaluatingJavaScriptFromString:@"document.getElementById('inputDIV').innerHTML"];

このようにして、文字列変数で使用するDIVinnerHTML内に含まれる文字列全体を取得し、そのHTML形式のテキストをニーズに合ったものに解析することができます。ただし、ブラウザが異なれば、を押すとDIVのフォーマットが異なり、新しいで囲まれた次の行を返すものもあれば、段落で囲むか、行を区切りまたはで終了するものもあります。次の行。入力文字列を処理するときは、これらすべての可能性を考慮する必要があります。コンポーネントを使用して作成したJSFiddleスクリプトを参照して、どのフォーマットが適用されるかを確認してください。contenteditablewebTextcontenteditableEnter KeyDIVP<BR><BR />shiftenterUIWebView

もちろん、あなたの場合、contenteditableDIVをより一般的にフォーマットされた行末(CR + LF)textareaを返すに置き換える方が簡単かもしれません。\nただし、DIVは設計が簡単なので、ニーズに合ったものを選択してください。

乾杯!

于 2013-02-06T04:50:30.413 に答える
1

スタックの客観的な c 側からこれに対する解決策があるとは思わない。標準の HTML- 要素は、1 つの文字列のみを配信します。物事のWebエンドで、いくつかのjavascriptマジックまたは同様のものを使用して達成できる可能性があります。

私の HTML スキルはスクラッチに達していませんが、その目的も制御する場合は、おそらく を textArea に変更すると役立つでしょうか?

于 2013-01-30T17:40:08.023 に答える