web-dev-qa-db-ja.com

UITextFieldの点滅カーソルを無効にしますか?

私は here の指示に従い、UIDatePickerで更新されるUITextFieldを正常に設定しました。ただし、UITextFieldのカーソルが点滅しているので、かなり不便です。そのカーソルを取り除くための解決策はありますか?

28

これは古い質問だと思いますが、iOS 7のアップデートにより、次のようにしてカーソルを非表示にできるようになりました。

[[self textFieldName] setTintColor:[UIColor clearColor]];

ただし、iOS 7以降でのみ機能します。

45
Jamie Chapman

UITextfieldをサブクラス化して- (CGRect)caretRectForPosition:(UITextPosition *)positionメソッドをオーバーライドし、CGRectZeroを返します。

- (CGRect)caretRectForPosition:(UITextPosition *)position {
    return CGRectZero;
}
39

お役に立てれば幸いです。

カーソルUIColor->空を設定します。

 [[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor clearColor] forKey:@"insertionPointColor"];

Swift:2.3

self.textField.valueForKey("textInputTraits")?.setValue(UIColor.clearColor() , forKey:"insertionPointColor")
32
Balaji G

Jcmのソリューションが機能しませんでした。私がやったことは、UILabelをサブクラス化して、UITextFieldのインタラクティブな機能を模倣し、必要な部分(カーソルなど)をなくすことでした。私はそれについてここにブログ投稿を書きました:

http://pietrorea.com/2012/07/how-to-hide-the-cursor-in-a-uitextfield/

基本的に、UILabelサブクラスは、isUserInteractionEnabled、inputView、inputViewAccessory、canBecomeFirstResponderを上書きする必要があります。それはほんの数行のコードであり、より理にかなっています。

6
Pietro Rea

まったくばかげたハックですが、インターフェイスビルダーのプロパティインスペクターのUIViewセクションでテキストフィールドの濃淡色を設定して背景色と一致させると、カーソルは見えなくなります。

2
brandonscript

私がしたことは、カーソルを非表示にしたいUITextFieldの上に別のUITextFieldをオーバーレイすることでした。次に、デリゲートメソッドtextFieldShouldBeginEditingで、他のtextFieldをファーストレスポンダーになるように設定し、NOを返しました。

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    if (textField.tag==TAG_OF_DUMMY_TEXTFIELD) {
        [otherField becomeFirstResponder];
        return NO;
    }
    return YES;
}

そして、メソッドで日付ピッカーが呼び出します:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@YOUR_DATE_FORMAT];
dummyField.text = [dateFormatter stringFromDate:datePicker.date];

インターフェースビルダーでは、otherField(datePicker入力ビューがあるビュー)がdummyField(カーソルを非表示にするビュー)の背後にあります。

1
jcm

最善の解決策ではありませんが、濃淡色の不透明度を0%に設定することもできます。

enter image description here

1

このソリューションが最も簡単に実装できることがわかりました。

必ず.hファイルでUITextFieldDelegateを定義してください。

.... UIViewController <UITextFieldDelegate>

.mファイルで、日付ピッカーに対して呼び出すメソッドにこれを追加します。

[yourTextField resignFirstResponder];

これにより、テキストフィールドが点滅するのを防ぎます。

0
nimrod

バラジのアプローチはうまくいきます。

私もそのようなKVCソリューションを何度も使用しました。文書化されていないようですが、動作します。率直に言って、ここではプライベートメソッドを使用せず、合法なKey-Valueコーディングのみを使用します。

[addNewCategoryTextField textInputTraits]とは大きく異なります。

追伸昨日、私の新しいアプリはこのアプローチで問題なくAppStoreに登場しました。そして、いくつかの読み取り専用プロパティ(navigatonBarなど)またはプライベートivarを変更するときにKVCを使用するのは、これが最初のケースではありません。

0
malex