我在Objective-C中看到了一些關於這個主題的話題。我閱讀了其中的很多內容,花了2天的時間試圖找到一個解決方案,並沒有一個爲我工作。我主要用C#編寫代碼。由於我的問題行爲(只在離開/重新輸入按鈕時觸發)和上下文(C#)有點不同。所以,我會在這裏問我的問題試試我的機會。Monotouch TouchUpInside不起作用,TouchDown作品
我會盡量保持簡單。
下面是代碼的示例:
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,.... so手指需要離開並重新租用按鈕,同時按住按鈕使TouchUpInside觸發。通常,這個代碼工作得很好。
事情經過:
- 如果我更換TouchUpInside通過達陣,然後TouchDown的工作。
- 對於所有超級視圖,「啓用了用戶交互」設置爲True。
- 所有視圖框架(在超級視圖中)似乎都在其超級框架內。
- 我移動了_buttonTest,注意到_buttonTest TouchUpInside在View,SuperView,SuperSuperView ....中沒有正確觸發,但它在SuperSuperSuperView中正確觸發。
有什麼建議嗎?
您是否嘗試過使用Monotouch社區尋求幫助?也許你錯過了一個竅門,或者只是在使用錯誤的事件。你使用'TouchUpInside'表明事件發生在'Touchdown'之後,它不清楚你實際上知道這一點。 – 2012-07-31 17:09:50
我使用'TouchUpInside'進行所有按鈕點擊(所以這是正確的方法),並沒有像你提到的問題。您的按鈕上方是否有其他視圖可阻止它被點擊? – jonathanpeppers 2012-07-31 17:14:49
我沒有嘗試Monotouch社區,但也許我會很快。我希望我錯過了一招,但我想我正在使用正確的事件。是的,我知道TouchUpInside事件出現在TouchDown之後。 – 2012-07-31 17:19:50