UIButtonサブクラスにdrawRectを使用すると、ハイライトされたときにボタンを描画するように呼び出されることはありません。タッチイベントでボタンのsetNeedsDisplayを呼び出す必要がありますか?UIButtonサブクラスにdrawRectを使用する場合
答えて
私が知る限り、UIButtonをサブクラス化する方法はありません。
UIButtonは、イニシャライザによって返される実際のクラスタイプではありません。 UIButtonは、一連のプライベートクラスのフロントの一種です。
は、あなたが持っていたと言う:
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
NSLog(@"myButton type: %@", [myButton description]);
あなたがログに返されるタイプは、「UIRoundedRectButton」であることがわかります。問題は、あなたが "UIRoundedRectButton"を拡張する必要があるということです。 UIButtonに返されるのはプライベートクラスなので、これは不可能です。
"UIRoundedRectButton"はすべてがプライベートである唯一の返されるクラスではありません。
つまり、UIButtonは、拡張に適さない方法で構築されました。
はい、それは私が発見したものの一種です。さらに、UIButtonは描画するためにdrawRectを使用していないようです。それは私のdrawRectを呼び出し、次に先に進んで、私が描いたもののビットマップを爆破します。そして、私はsuperのdrawRectと呼んでいません。 代わりにUIControlをサブクラス化しましたが、私はUIButtonが提供していたタップのハイライトを見逃しています。 – mahboudz
その痛みですが、私はリンゴは私たちがクラスを拡張したいと思っていないと思います...クラスはそれを扱うことができませんまたは彼らは言語の構造のビジョンに従うために使用することを強制しています私はちょうど知らない:) – abe
私は、私はそれは古い質問です知っているが、私は同じ問題に遭遇し、簡単な解決策見つけ、次の私のUIButton
サブクラス
- (void)awakeFromNib {
[self addTarget:self action:@selector(redraw) forControlEvents:UIControlEventAllEvents];
}
- (void)redraw {
[self setNeedsDisplay];
[self performSelector:@selector(setNeedsDisplay) withObject:self afterDelay:0.15];
}
に追加と同じ問題と満足のいく成功を収めて:
を次のメソッドをUIButtonサブクラスに追加してください:
-(void)setHighlighted:(BOOL)highlighted
{
[super setHighlighted:highlighted];
[self setNeedsDisplay];
}
これだけです!ここ
うわー!ありがとうございました。ありがとう;) –
- 1. サブクラスNSScrollViewのdrawRect:メソッド
- 2. UILabelのサブクラスがdrawRect:
- 3. カスタムdrawRectでラウンドUIButtonを作成する:
- 4. drawRectを使わずにUIButton rectを変更する
- 5. Pulsing UIButtonサブクラス
- 6. 特定のUIButtonTypeを使用してUIButtonをサブクラス化する
- 7. UIViewサブクラスでdrawRectを呼び出す
- 8. Objective-C - layoutSubviewsを使用する場合のUITableViewCellのサブクラス化
- 9. UIButtonトリガーのサブクラスをセグエ?
- 10. TypeScript OOデザイン - コンストラクタのみが異なる場合にサブクラスを使用する
- 11. UIButtonサブクラスをハイライトする方法は?
- 12. UINavigationBarサブクラスのdrawRectはステータスバーを黒にします
- 13. UIButtonカテゴリ/サブクラスのドラッグアンドドロップのiPad
- 14. タッチアップ(@IBAction)はUIButtonのサブクラス
- 15. UIButtonサブクラス - プロパティの設定?
- 16. cellforrowatindexpathにdrawrectを置く場所は?
- 17. クリックを処理するUIButtonをサブクラス化する
- 18. UIViewサブクラスでdrawRectで描画されたコンポーネントのテキストを更新
- 19. $ thisを使用する場合とシンプルな変数を使用する場合
- 20. あるサブクラスのインスタンス変数を別のサブクラスに使用する
- 21. データベースにTLSを使用する場合
- 22. ケータールにto_categoricalを使用する場合
- 23. UIButtonのサブクラスが機能しない
- 24. drawRectを使用して再描画
- 25. setLineWidthプロパティ(drawRect関数)でCGContextSetTextDrawingModeを使用
- 26. CoreTextを使用したUIView drawRectのリーク
- 27. 方向変更時にdrawRectを使用する
- 28. Railty - 使用する場合
- 29. UIButtonサイズを使ってAutolayoutで角の半径を設定するサブクラス
- 30. 拡張UIButtonはプロトコルに準拠している場合のみ
回答: http://stackoverflow.com/questions/4022763/change-background-color-of-uibutton-when-highlighted – GoldenBoy