質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

596閲覧

textFieldの_clearButtonの色が変わらない

gtime

総合スコア51

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/10/10 02:24

編集2017/10/10 04:06

swift

1import UIKit 2class ViewController: UIViewController, UISearchBarDelegate { 3 @IBOutlet weak var searchBar: UISearchBar! 4 override func viewDidLoad() { 5 super.viewDidLoad() 6 let textField = searchBar.value(forKey: "_searchField") as! UITextField 7 let foo = textField.value(forKey: "_clearButton") as! UIButton 8 print(foo) 9 10 foo.setImage(foo.imageView?.image?.withRenderingMode(.alwaysTemplate), for: .normal) 11 foo.setImage(foo.imageView?.image?.withRenderingMode(.alwaysTemplate), for: .highlighted) 12 foo.backgroundColor = .red 13 foo.tintColor = .red 14 } 15} 16 17

このコードを実行しても色が変わりません
textFieldの_clearButtonの色を変えるにはどのようにすればいいのでしょうか?
foo.backgroundColor = .red を設定すると背景は赤くなるので tintColor だけ正常に動作していないと思われます。
環境はXcode9, Swift4, iOS11 です。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

.value(forKey: "_clearButton")がnilのときに設定していませんか?
クリアボタンが表示されていない時はnilになっているようなので、表示された後(表示される直前?)に設定して下さい。

【追記】

foo.imageView.imageがnilなので×画像の色変更が出来ていないようです。

クリアボタンが表示された直後に設定しようと思い、文字を入力したときに呼ばれるUISearchBarDelegateのsearchBar(_:textDidChange:)の中で設定してみましたが、一文字目を入力した時点では、まだimageがnilでした。(二文字目を入力した時点で色は変わりました)

ハック的な手法はあまり好きではないですし、よく分かっていない人がやるようなことではありませんので、これ以上の調査は行いません。

投稿2017/10/10 02:51

編集2017/10/10 05:13
fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gtime

2017/10/10 03:47

回答ありがとうございます print(faa) で nil ではなく、 <UIButton: 0x7f8f49714340; frame = (-24.3333 -10.3333; 19 19); opaque = NO; layer = <CALayer: 0x60000023e5a0>> が出力される faa.backgroundColor = .red を設定すると背景は赤くなるので tintColor だけ正常に動作していないと思われます。
fuzzball

2017/10/10 03:49

faaというのはtypoではないのですか? typoでないなら、faaとは何なんでしょうか?
gtime

2017/10/10 03:51

すみません。faaは間違いでした 正しくは foo です
fuzzball

2017/10/10 03:55

コード中の faa も foo の間違いなのでしょうか?
gtime

2017/10/10 03:56

はい。faa は 全て foo の間違いです。 わかりにくい定数ですみません
fuzzball

2017/10/10 03:58

このコードはどこで呼び出してますか? あと、UITextFieldのクリアボタンに関する設定がどうなっているか教えて下さい。
gtime

2017/10/10 04:05

質問内容を修正し、コードを全て載せました。
fuzzball

2017/10/10 05:14

回答に追記しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問