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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

0回答

596閲覧

iOSでUIButtonのタップ領域を広げる

yrema

総合スコア286

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2019/05/04 16:45

タイトルの通りですが、以下の記事(Swift)を参考にしてXamarin版のUIButton拡張クラスを作ってみたのですが、領域が広がるどころか狭くなってしまいました。何か間違っているでしょうか?

【iOS】UIButtonのタップ領域だけを拡大する

c#

1 class UIButtonEx : UIButton 2 { 3 public UIEdgeInsets Insets { get; set; } = new UIEdgeInsets(0, 0, 0, 0); 4 5 public UIButtonEx(CGRect frame) : base(frame) 6 { 7 } 8 9 public override bool PointInside(CGPoint point, UIEvent uievent) 10 { 11 CGRect rect = this.Bounds; 12 rect.X -= Insets.Left; 13 rect.Y -= Insets.Top; 14 CGSize size = rect.Size; 15 size.Width += Insets.Left + Insets.Right; 16 size.Height += Insets.Top + Insets.Bottom; 17 rect.Size = size; 18 19 // 拡大したViewサイズがタップ領域に含まれているかどうかを返します 20 return rect.Contains(point); 21 } 22 }

▼呼び出し側

c#

1 private UIBarButtonItem CreateButton(string iconName, OnButtonClicked action, OnButtonLongPressed longPressAction) 2 { 3 UIButtonEx button = new UIButtonEx(new CGRect(0, 0, 20, 20)); 4 button.Insets = new UIEdgeInsets(10, 10, 10, 10); // タップ領域を拡張する 5 UIImage backgroundImage = UIImage.FromBundle(iconName).ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal); 6 button.SetBackgroundImage(backgroundImage, UIControlState.Normal); 7 button.TouchUpInside += (s, e) => action(s, e);

◆環境
▼Windows 10
Visual Studio Community 2017 Version 15.9.11
Xamarin 4.12.3.83
Xamarin.iOS and Xamarin.Mac SDK 12.4.0.64
▼Mac mini(Late 2014)
macOS Majave 10.14.4
Xcode 10.2.1

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

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

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

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

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

fuzzball

2019/05/07 02:49 編集

広げた領域をタップしたとき、PointInsideを抜ける直前の、 ・Insets ・point ・rect ・rect.Contains(point) を書いて下さい。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問