ここの手順に従い、UIDatePickerで更新されるUITextFieldを正常に設定しました。ただし、UITextFieldのカーソルが点滅しているため、かなり厄介なようです。
そのカーソルを取り除くための解決策はありますか?
ここの手順に従い、UIDatePickerで更新されるUITextFieldを正常に設定しました。ただし、UITextFieldのカーソルが点滅しているため、かなり厄介なようです。
そのカーソルを取り除くための解決策はありますか?
これは古い質問だと思いますが、iOS 7 の更新により、次の操作を行うことでカーソルを非表示にできるようになりました。
[[self textFieldName] setTintColor:[UIColor clearColor]];
ただし、iOS 7 以降でのみ動作します。
UITextfield をサブクラス化し、- (CGRect)caretRectForPosition:(UITextPosition *)position
メソッドをオーバーライドして を返しCGRectZero
ます。
- (CGRect)caretRectForPosition:(UITextPosition *)position {
return CGRectZero;
}
jcmのソリューションを機能させることができませんでした。私が最終的にやったのは、UILabel をサブクラス化して、不要な部分 (カーソルなど) なしで UITextField のインタラクティブな機能を模倣することでした。私はそれについてここにブログ投稿を書きました:
http://pietrorea.com/2012/07/how-to-hide-the-cursor-in-a-uitextfield/
基本的に、UILabel サブクラスは isUserInteractionEnabled、inputView、inputViewAccessory、および canBecomeFirstResponder を上書きする必要があります。これはほんの数行のコードであり、より理にかなっています。
まったくばかげたハックですが、Interface Builder プロパティ インスペクターのセクションでテキスト フィールドの色合いUIView
を背景色と一致するように設定すると、カーソルが見えなくなります。
私がしたことは、カーソルを隠したいものの上に別の 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 (カーソルを非表示にするもの) の背後にあります。
このソリューションが最も簡単に実装できることがわかりました。
.h ファイルで UITextFieldDelegate を定義してください。
.... UIViewController <UITextFieldDelegate>
.m ファイルで、日付ピッカーに対して呼び出すメソッドにこれを追加します。
[yourTextField resignFirstResponder];
これにより、テキストフィールドが点滅しなくなります。
関連付けられたオブジェクトを介してカテゴリにBOOL cursorless
プロパティを追加できます。UITextField
@interface UITextField (Cursorless)
@property (nonatomic, assign) BOOL cursorless;
@end
次に、メソッド スウィズリングを使用して、を使用して とそのデフォルト値をcaretRectForPosition:
切り替えるメソッドでスウィズルします。CGRectZero
cursorless
これにより、ドロップイン カテゴリを介したシンプルなインターフェイスが実現します。これは、次のファイルに示されています。
それらをドロップするだけで、このシンプルなインターフェースの利点を得ることができます
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