Objective-C でこの主題に関するいくつかのトピックを見てきました。私はそれらの多くを読み、解決策を見つけるために2日間費やしましたが、どれもうまくいきませんでした. 主にC#でコーディングしています。私の問題の動作(ボタンを離れる/再入力するときにのみ起動する)とコンテキスト(C#)は少し異なります。そこで、ここで質問することでチャンスをつかもうと思います。
シンプルに保つようにします。
コードのサンプルを次に示します。
private UIButton _buttonTest;
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
_buttonTest = new UIButton(new RectangleF(10, 70, 50, 50));
_buttonTest.SetTitle("0", UIControlState.Normal);
_buttonTest.TouchUpInside += HandleButtonTestTouchUpInside;
_buttonTest.BackgroundColor = UIColor.Red;
this.View.AddSubview(_buttonTest);
}
void HandleButtonTestTouchUpInside (object sender, EventArgs e)
{
string textNumber = _buttonTest.Title(UIControlState.Normal);
// Increment Number
_buttonTest.SetTitle((int.Parse(textNumber)+1).ToString(), UIControlState.Normal);
}
- ボタンがあり、タイトル テキストが「0」に設定されています。
- ユーザーがそれをクリックすると、番号 (タイトル) が 1 ずつ増えます。
通常、このコードは非常にうまく機能します。
ただし、いくつかの不明な理由により、一部のクラスでは機能しません...
問題は次のとおりです。
- TouchUpInside は起動しません。...しかし、指でボタンを押したままにしてボタンを離し、ボタンを再入力してボタンを離すと、....TouchUpInsideが発生します....だからTouchUpInside を起動するには、ボタンを押したまま、指を離してボタンを再び離す必要があります。通常、このコードは非常にうまく機能します。
チェックした内容:
- TouchUpInside を TouchDown に置き換えると、TouchDown が機能します。
- 「User Interaction Enabled」は、すべてのスーパービューで True に設定されています。
- すべてのビュー フレーム (スーパービュー間) は、スーパービュー フレーム内にあるようです。
- _buttonTest を移動したところ、_buttonTest TouchUpInside が View、SuperView、SuperSuperView で正しく起動しないことに気付きました....しかし、SuperSuperSuperView では正しく起動します。
なにか提案を?