[解決済み] UIViewの枠を超えたインタラクション
2023-01-12 06:48:28
質問
UIButton のフレームが親のフレームの外にあるとき、UIButton (または他のコントロール) がタッチ イベントを受け取ることは可能ですか。これを試すと、UIButtonはイベントを受信できないようです。これを回避するにはどうすればよいですか?
どのように解決するのですか?
はい。
hitTest:withEvent:
メソッドをオーバーライドして、そのビューが含むより大きな点の集合のビューを返すことができます。詳細は
UIView クラスリファレンス
.
編集してください。 例
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
CGFloat radius = 100.0;
CGRect frame = CGRectMake(-radius, -radius,
self.frame.size.width + radius,
self.frame.size.height + radius);
if (CGRectContainsPoint(frame, point)) {
return self;
}
return nil;
}
2を編集します。
(明確化後:) ボタンが親の境界内にあるものとして扱われるようにするために、オーバーライドする必要があります。
pointInside:withEvent:
をオーバーライドする必要があります。
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
if (CGRectContainsPoint(self.view.bounds, point) ||
CGRectContainsPoint(button.view.frame, point))
{
return YES;
}
return NO;
}
注意 pointInsideをオーバーライドするためのコードが正しくありません。以下のSummonの説明のように、こうしてください。
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
if ( CGRectContainsPoint(self.oversizeButton.frame, point) )
return YES;
return [super pointInside:point withEvent:event];
}
を使う可能性が非常に高いことに注意してください。
self.oversizeButton
をこの UIView サブクラスの IBOutlet として使用することになるでしょう。そうすれば、問題の "oversize button" を、問題の特別なビューにドラッグするだけです。(または、何らかの理由でプロジェクトでこれをたくさん行っている場合、特別なUIButtonサブクラスがあり、それらのクラスのサブビューリストを調べることができます)。お役に立てれば幸いです。
関連
-
[解決済み] Cocoa:フレームとバウンドはどう違うの?
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] UIViewに角丸をつける
-
[解決済み] レビュー待ちの状態でバイナリを拒否する(バイナリ拒否ボタンが見つからない)
-
[解決済み] UITableViewHeaderFooterView。背景色を変更できない
-
[解決済み】UIViewのフレーム、バウンド、センター
-
[解決済み] iPhoneのTableViewのCellの右側に小さな矢印を追加する
-
[解決済み] インスタンスからクラス名を取得する
-
[解決済み] リンカーフラグ -ObjC は何をするのですか?
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] hw.machine」識別子の信頼性を確認する方法は?
-
[解決済み】「推奨アイコンファイルがありません - バンドルには、ちょうど「120x120」ピクセル、.png 形式の iPhone / iPod Touch 用のアプリアイコンが含まれていません。
-
[解決済み] APNSの.pemファイルを作成する?
-
[解決済み] UISearchDisplayController/UISearchBarでNSFetchedResultsController(CoreData)をフィルタリングする方法
-
[解決済み] iOSのイベントハンドリング - hitTest:withEvent:とpointInside:withEvent:はどのように関係しているのでしょうか?
-
[解決済み] ナビゲーションコントローラスタック、サブビュー、モーダルコントローラを使用せずに、ビューコントローラの変化をアニメーション化する?
-
[解決済み] カメラロールに画像を保存する方法を教えてください。
-
[解決済み] UITextFieldの高さを設定するには?
-
[解決済み] UITableViewのセクションヘッダーのデフォルトの高さ
-
[解決済み] all_loadリンカーフラグは何をするのですか?