私は here の指示に従い、UIDatePickerで更新されるUITextFieldを正常に設定しました。ただし、UITextFieldのカーソルが点滅しているので、かなり不便です。そのカーソルを取り除くための解決策はありますか?
これは古い質問だと思いますが、iOS 7のアップデートにより、次のようにしてカーソルを非表示にできるようになりました。
[[self textFieldName] setTintColor:[UIColor clearColor]];
ただし、iOS 7以降でのみ機能します。
UITextfieldをサブクラス化して- (CGRect)caretRectForPosition:(UITextPosition *)position
メソッドをオーバーライドし、CGRectZero
を返します。
- (CGRect)caretRectForPosition:(UITextPosition *)position {
return CGRectZero;
}
お役に立てれば幸いです。
カーソルUIColor->空を設定します。
[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor clearColor] forKey:@"insertionPointColor"];
Swift:2.3
self.textField.valueForKey("textInputTraits")?.setValue(UIColor.clearColor() , forKey:"insertionPointColor")
Jcmのソリューションが機能しませんでした。私がやったことは、UILabelをサブクラス化して、UITextFieldのインタラクティブな機能を模倣し、必要な部分(カーソルなど)をなくすことでした。私はそれについてここにブログ投稿を書きました:
http://pietrorea.com/2012/07/how-to-hide-the-cursor-in-a-uitextfield/
基本的に、UILabelサブクラスは、isUserInteractionEnabled、inputView、inputViewAccessory、canBecomeFirstResponderを上書きする必要があります。それはほんの数行のコードであり、より理にかなっています。
まったくばかげたハックですが、インターフェイスビルダーのプロパティインスペクターのUIView
セクションでテキストフィールドの濃淡色を設定して背景色と一致させると、カーソルは見えなくなります。
私がしたことは、カーソルを非表示にしたい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(カーソルを非表示にするビュー)の背後にあります。
このソリューションが最も簡単に実装できることがわかりました。
必ず.hファイルでUITextFieldDelegateを定義してください。
.... UIViewController <UITextFieldDelegate>
.mファイルで、日付ピッカーに対して呼び出すメソッドにこれを追加します。
[yourTextField resignFirstResponder];
これにより、テキストフィールドが点滅するのを防ぎます。
バラジのアプローチはうまくいきます。
私もそのようなKVCソリューションを何度も使用しました。文書化されていないようですが、動作します。率直に言って、ここではプライベートメソッドを使用せず、合法なKey-Valueコーディングのみを使用します。
[addNewCategoryTextField textInputTraits]とは大きく異なります。
追伸昨日、私の新しいアプリはこのアプローチで問題なくAppStoreに登場しました。そして、いくつかの読み取り専用プロパティ(navigatonBarなど)またはプライベートivarを変更するときにKVCを使用するのは、これが最初のケースではありません。