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. Objective-C - layoutSubviewsを使用する場合のUITableViewCellのサブクラス化
- 4. Pulsing UIButtonサブクラス
- 5. UIViewサブクラスでdrawRectを呼び出す
- 6. UIButtonサブクラスをハイライトする方法は?
- 7. UIButtonカテゴリ/サブクラスのドラッグアンドドロップのiPad
- 8. UIButtonサブクラス - プロパティの設定?
- 9. cellforrowatindexpathにdrawrectを置く場所は?
- 10. Railty - 使用する場合
- 11. クリックを処理するUIButtonをサブクラス化する
- 12. 目的Cコンベンション:使用する場合と使用する場合
- 13. 拡張UIButtonはプロトコルに準拠している場合のみ
- 14. ハスケルでハムズを使用する場合Yesodなしの場合
- 15. 動的にリストアアダプタを使用する場合と比較する場合
- 16. 単一のテーブル継承を使用する場合、(サブクラスではなく)親クラスにアクセスできますか?
- 17. HTML5モバイルアプリ - 単にUIWebViewを使用する場合、PhoneGapを使用する場合はいつですか?
- 18. UIViewサブクラスでdrawRectで描画されたコンポーネントのテキストを更新
- 19. UIButtonサイズを使ってAutolayoutで角の半径を設定するサブクラス
- 20. 方向変更時にdrawRectを使用する
- 21. モデルフィールドをサブクラス化する場合は、__init __の引数は
- 22. drawRectを使用して再描画
- 23. CoreTextを使用したUIView drawRectのリーク
- 24. solを使用する場合のOOM
- 25. IModelBinderとDefaultModelBinderを使用する場合
- 26. SemanticModel.GetSymbolInfoとSemanticModel.GetDeclaredSymbolを使用する場合
- 27. getXメソッドを使用する場合
- 28. C#/ C++を使用する場合
- 29. PHP:CURLを使用する場合のセキュリティ?
- 30. メソッドとオブジェクトを使用する場合
回答: http://stackoverflow.com/questions/4022763/change-background-color-of-uibutton-when-highlighted – GoldenBoy