31

ここの手順に従い、UIDatePickerで更新されるUITextFieldを正常に設定しました。ただし、UITextFieldのカーソルが点滅しているため、かなり厄介なようです。

そのカーソルを取り除くための解決策はありますか?

4

10 に答える 10

48

これは古い質問だと思いますが、iOS 7 の更新により、次の操作を行うことでカーソルを非表示にできるようになりました。

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

ただし、iOS 7 以降でのみ動作します。

于 2014-02-18T11:27:42.937 に答える
40

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

- (CGRect)caretRectForPosition:(UITextPosition *)position {
    return CGRectZero;
}
于 2013-03-21T09:06:20.693 に答える
6

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

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

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

于 2012-07-06T20:57:21.863 に答える
2

まったくばかげたハックですが、Interface Builder プロパティ インスペクターのセクションでテキスト フィールドの色合いUIViewを背景色と一致するように設定すると、カーソルが見えなくなります。

于 2016-01-29T20:07:28.447 に答える
1

私がしたことは、カーソルを隠したいものの上に別の 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];

Interface Builder では、otherField (datePicker 入力ビューを持つもの) は、dummyField (カーソルを非表示にするもの) の背後にあります。

于 2011-09-29T02:37:10.653 に答える
1

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

ここに画像の説明を入力

于 2016-11-15T13:38:57.317 に答える
0

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

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

.... UIViewController <UITextFieldDelegate>

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

[yourTextField resignFirstResponder];

これにより、テキストフィールドが点滅しなくなります。

于 2013-01-01T18:05:10.383 に答える
-1

関連付けられたオブジェクトを介してカテゴリにBOOL cursorlessプロパティを追加できます。UITextField

@interface UITextField (Cursorless)

@property (nonatomic, assign) BOOL cursorless;

@end

次に、メソッド スウィズリングを使用して、を使用して とそのデフォルト値をcaretRectForPosition:切り替えるメソッドでスウィズルします。CGRectZerocursorless

これにより、ドロップイン カテゴリを介したシンプルなインターフェイスが実現します。これは、次のファイルに示されています。

それらをドロップするだけで、このシンプルなインターフェースの利点を得ることができます

UITextFieldカテゴリ: https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless.h https://github.com/rexmas/RexDK/blob/master/RexDK/UI/UITextField%2BRXCursorless .m

メソッドの入れ替え: https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject%2BRXRuntimeAdditions.h https://github.com/rexmas/RexDK/blob/master/RexDK/Foundation/NSObject% 2BRXRuntimeAdditions.m

于 2014-05-19T02:15:53.333 に答える