私はユーザーが何らかの情報を書かなければならないアプリケーションを開発しています。このためには、複数行のUITextField
が必要です(一般にUITextField
は単一行です)。
私はグーグルでいるので、私はこの目的のためにUITextView
の代わりにUITextfield
を使う答えを見つけます。
UITextField
は特に1行のみです。
あなたのGoogle検索は正しいです、あなたはマルチテキストの表示と編集のためにUITextView
の代わりにUITextField
を使う必要があります。
Interface Builderで、希望する場所にUITextView
を追加し、「編集可能」ボックスを選択します。デフォルトでは複数行になります。
[OK]を私はいくつかのトリックでそれをやった;)最初にUITextField
を構築し、このようにsize
を増やしました:
CGRect frameRect = textField.frame;
frameRect.size.height = 53;
textField.frame = frameRect;
それからUITextView
を私のUITextField
を作成したのと全く同じ領域に構築し、そのbackground color
を削除します。 uは複数行TextField
を持っているようです。
UITextViewを使ってUITextFieldを偽造することができます。問題は、プレースホルダー機能が失われることです。
UITextViewを使用してプレースホルダが必要な場合は、次の手順を実行します。
ViewDidLoadで、色とテキストをプレースホルダーに設定します。
myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."
次に、UITextViewを選択したときにプレースホルダを消します。
func textViewDidBeginEditing (textView: UITextView) {
if myTxtView.textColor.textColor == ph_TextColor && myTxtView.isFirstResponder() {
myTxtView.text = nil
myTxtView.textColor = .white
}
}
ユーザーが編集を終了したら、値があることを確認してください。ない場合は、プレースホルダーをもう一度追加します。
func textViewDidEndEditing (textView: UITextView) {
if myTxtView.text.isEmpty || myTxtView.text == "" {
myTxtView.textColor = .lightGray
myTxtView.text = "Type your thoughts here..."
}
}
あなたが偽造する必要があるかもしれない他の機能:
UITextFieldはしばしばすべての文字を大文字にします、あなたはその機能をUITableViewに加えることができます:
myTxtView.autocapitalizationType = .words
UITextFieldは通常スクロールしません。
myTxtView.scrollEnabled = false
複数行の動作のほかに、UITextViewとUITextFieldの主な違いは、UITextViewがプレースホルダを提案しないことです。この制限を回避するために、「偽のプレースホルダ」を付けたUITextViewを使用できます。
詳細については、このSO質問を参照してください。 ITextViewのプレースホルダ 。
2行のテキストを持つUITextFieldが必要な場合は、2行目のテキストのUITextFieldのサブビューとしてUILabelを追加することができます。私は自分のアプリにUITextFieldをタップしても編集可能であることに気付かないことが多いUITextFieldを持っています。UITextFieldに "Tap to Edit"という小さな字幕テキストを追加したいと思いました。
CGFloat tapLlblHeight = 10;
UILabel *tapEditLbl = [[UILabel alloc] initWithFrame:CGRectMake(20, textField.frame.size.height - tapLlblHeight - 2, 70, tapLlblHeight)];
tapEditLbl.backgroundColor = [UIColor clearColor];
tapEditLbl.textColor = [UIColor whiteColor];
tapEditLbl.text = @"Tap to Edit";
[textField addSubview:tapEditLbl];
はい、UITextViewはあなたが探しているものです。リターンキーなど、いくつかの方法で対処する必要がありますが、テキストを追加することもできます。テキストが多すぎる場合は上下にスクロールできます。
このリンクには、データを入力するための画面を作成するための情報があります。
uITextFieldの代わりにUITextViewを使用してください。
上記のh4xxrの答えを補足するもので、UITextFieldの高さを調整するより簡単な方法は、属性インスペクタ - >テキストフィールドで四角形の境界線スタイルを選択することです。 (デフォルトでは、UITextfieldの境界線スタイルは楕円形です。)
参照:ここで答えたブライアン: どのようにUITextFieldの高さを設定するには?