gpt4 book ai didi

c# - 为什么我的 UIButton 没有响应?

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:52 25 4
gpt4 key购买 nike

我是 IOS 和 Monotouch 的新手,但精通 .NET 和 C#。 UIButton 没有响应事件,我不知道为什么。我至少阅读了 3 本关于使用 MonoTouch 编程的教科书,并在 stackoverflow 和其他网站上阅读了许多问题和答案,但没有找到解决方案。我已将 UIButton 子类化以获取 id,代码为:

using System;
using MonoTouch.UIKit;
using System.Drawing;

namespace Roombler.Views
{
public class SmallDottedMonthButton : UIButton
{

public SmallDottedMonthButton(int numberOfButton)
{
this.number = numberOfButton;
UIImage image = UIImage.FromFile("Green.png");

this.SetBackgroundImage(image, UIControlState.Normal);
}

public int number = 0;


}
}

此代码然后在 View 中使用。该按钮显示正确,但我无法为其附加任何事件。我读到启用 userInteraction 可以解决问题,但对我来说不是。这是如何使用自定义 UIButton(名为 smallDottedMonthButtonNr1 的):

using System;
using MonoTouch.UIKit;
using System.Drawing;
using Roombler.Controllers;

namespace Roombler.Views
{
public class MonthSelectorView: UIView
{
public UILabel currentYearLabel;
public UILabel containerForDetailedWeeksLabel;

public SmallDottedMonthButton smallDottedMonthButtonNr1;
public SmallDottedMonthButton smallDottedMonthButtonNr2;

public NormalDottedMonthButton normalDottedMonthButtonNr1;
public NormalDottedMonthButton normalDottedMonthButtonNr2;
public NormalDottedMonthButton normalDottedMonthButtonNr3;

public WeekButton weekButtonNr1;
public WeekButton weekButtonNr2;
public WeekButton weekButtonNr3;
public WeekButton weekButtonNr4;
public WeekButton weekButtonNr5;
public WeekButton weekButtonNr6;

public NormalMonthButton normalMonthButtonNr1;
public NormalMonthButton normalMonthButtonNr2;
public NormalMonthButton normalMonthButtonNr3;

public SmallMonthButton smallMonthButtonNr1;
public SmallMonthButton smallMonthButtonNr2;

private UIScrollView baseView;

private DateTime currentMonth;

public MonthSelectorView()
{
this.UserInteractionEnabled = true;
smallDottedMonthButtonNr1 = new SmallDottedMonthButton(1);
//smallDottedMonthButtonNr1.SetNumberOfButton(1);

smallDottedMonthButtonNr2 = new SmallDottedMonthButton(2);
//smallDottedMonthButtonNr2.SetNumberOfButton(2);

normalDottedMonthButtonNr1 = new NormalDottedMonthButton(1);

normalDottedMonthButtonNr2 = new NormalDottedMonthButton(2);

normalDottedMonthButtonNr3 = new NormalDottedMonthButton(3);

weekButtonNr1 = new WeekButton();
weekButtonNr1.SetNumberOfButton(1);

weekButtonNr2 = new WeekButton();
weekButtonNr2.SetNumberOfButton(2);

weekButtonNr3 = new WeekButton();
weekButtonNr3.SetNumberOfButton(3);

weekButtonNr4 = new WeekButton();
weekButtonNr4.SetNumberOfButton(4);

weekButtonNr5 = new WeekButton();
weekButtonNr5.SetNumberOfButton(5);

weekButtonNr6 = new WeekButton();
weekButtonNr6.SetNumberOfButton(6);

normalMonthButtonNr1 = new NormalMonthButton(1);

normalMonthButtonNr2 = new NormalMonthButton(2);

normalMonthButtonNr3 = new NormalMonthButton(3);

smallMonthButtonNr1 = new SmallMonthButton(1);
smallMonthButtonNr2 = new SmallMonthButton(2);

baseView = new UIScrollView {
Frame = setSizeAndPosition(10.0f, 0.0f, 780.0f, 50.0f),
BackgroundColor = UIColor.DarkGray,
AutoresizingMask = UIViewAutoresizing.FlexibleWidth
};
this.AddSubview(baseView);

baseView.UserInteractionEnabled = true;

currentYearLabel = new UILabel(new RectangleF(5.0f, 5.0f, 100.0f, 40.0f));
currentYearLabel.Text = "2012";
currentYearLabel.BackgroundColor = UIColor.Brown;
currentYearLabel.TextColor = UIColor.White;
currentYearLabel.TextAlignment = UITextAlignment.Center;
baseView.AddSubview(currentYearLabel);


SizeF size = setSize(40.0f, 40.0f);
DateTime date = currentMonth;
date = date.AddMonths(1);
constants = new MonthConstants();

month = constants.GetNameOfMonth(date.Month, true);

smallDottedMonthButtonNr1.SetTitle(month, UIControlState.Normal);
smallDottedMonthButtonNr1.Font = UIFont.FromName("Arial", 8f);
smallDottedMonthButtonNr1.Frame = new RectangleF(100.0f, 15.0f, 40, 40);
smallDottedMonthButtonNr1.BackgroundColor = UIColor.White;
smallDottedMonthButtonNr1.SetTitleShadowColor(UIColor.Green, UIControlState.Normal);
smallDottedMonthButtonNr1.SetTitleColor(UIColor.Black, UIControlState.Normal);



baseView.AddSubview(smallDottedMonthButtonNr1);

smallDottedMonthButtonNr1.TouchUpInside += HandleTouchUpInside;


addNormalDottedButton(normalDottedMonthButtonNr1, new PointF(160.0f, 20.0f));
addNormalDottedButton(normalDottedMonthButtonNr2, new PointF(180.0f, 20.0f));
addNormalDottedButton(normalDottedMonthButtonNr3, new PointF(200.0f, 20.0f));

containerForDetailedWeeksLabel = new UILabel(new RectangleF(220.0f, 20.0f, 100.0f, 20.0f));


addWeekButton(weekButtonNr1.GetButton(1), new PointF(230.0f, 20.0f));
addWeekButton(weekButtonNr2.GetButton(2), new PointF(240.0f, 20.0f));
addWeekButton(weekButtonNr3.GetButton(3), new PointF(250.0f, 20.0f));
addWeekButton(weekButtonNr4.GetButton(4), new PointF(260.0f, 20.0f));
addWeekButton(weekButtonNr5.GetButton(5), new PointF(270.0f, 20.0f));
addWeekButton(weekButtonNr6.GetButton(6), new PointF(280.0f, 20.0f));

addNormalMonthButton(normalMonthButtonNr1, new PointF(310.0f, 20.0f));
addNormalMonthButton(normalMonthButtonNr2, new PointF(370.0f, 20.0f));
addNormalMonthButton(normalMonthButtonNr3, new PointF(430.0f, 20.0f));

addSmallMonthButton(smallMonthButtonNr1, new PointF(490.0f, 20.0f));
addSmallMonthButton(smallMonthButtonNr2, new PointF(540.0f, 20.0f));

this.AddSubview(containerForDetailedWeeksLabel);


UISlider weekOrMonthSlider;

weekOrMonthSlider = new UISlider { Frame = new RectangleF (500, 500,
100, 50) };

weekOrMonthSlider.MinValue = 0.0f;
weekOrMonthSlider.MaxValue = 20.0f;
weekOrMonthSlider.SetValue(10.0f, false);

weekOrMonthSlider.ValueChanged += delegate
{
//_text = _slider.Value.ToString ();
//_testLabel.Text = _text;
};
this.AddSubview(weekOrMonthSlider);


}
void HandleTouchUpInside(object sender, EventArgs e)
{
smallDottedMonthButtonNr1.SetTitle("Test", UIControlState.Normal);
}


private RectangleF setSizeAndPosition(float x, float y, float width, float hight)
{
return new RectangleF(x, y, width, hight);
}

private SizeF setSize(float width, float hight)
{
return new SizeF(width, hight);

}

public void setCurrentMonth(DateTime currentMonth)
{
this.currentMonth = currentMonth;
}

String month;
MonthConstants constants;

private SmallDottedMonthButton addSmallDottedButton(SmallDottedMonthButton button, PointF position)
{


SizeF size = setSize(40.0f, 40.0f);
DateTime date = currentMonth;
date = date.AddMonths(button.number);
constants = new MonthConstants();

month = constants.GetNameOfMonth(date.Month, true);

button.SetTitle(month, UIControlState.Normal);
button.Font = UIFont.FromName("Arial", 8f);
button.Frame = new RectangleF(position, size);
button.BackgroundColor = UIColor.White;
button.SetTitleShadowColor(UIColor.Green, UIControlState.Normal);

baseView.AddSubview(button);
return button;

}

private void addNormalDottedButton(NormalDottedMonthButton button, PointF position)
{
SizeF size = setSize(50.0f, 50.0f);

DateTime date = currentMonth;
date = date.AddMonths(button.number);
month = constants.GetNameOfMonth(date.Month, true);

button.SetTitle(month, UIControlState.Normal);
button.Frame = new RectangleF(position, size);
button.BackgroundColor = UIColor.White;
button.SetTitleShadowColor(UIColor.Green, UIControlState.Normal);
baseView.AddSubview(button);
}

private void addWeekButton(WeekButton button, PointF position)
{
SizeF size = setSize(35.0f, 35.0f);

DateTime date = currentMonth;
date = date.AddMonths(button.number);
month = constants.GetNameOfMonth(date.Month, true);

button.SetTitle(month, UIControlState.Normal);
button.Frame = new RectangleF(position, size);
button.BackgroundColor = UIColor.White;
button.SetTitleShadowColor(UIColor.Green, UIControlState.Normal);
baseView.AddSubview(button);
}

private void addNormalMonthButton(NormalMonthButton button, PointF position)
{
SizeF size = setSize(50.0f, 50.0f);
DateTime date = currentMonth;
date = date.AddMonths(button.number);

month = constants.GetNameOfMonth(date.Month, true);

button.SetTitle(month, UIControlState.Normal);
button.Frame = new RectangleF(position, size);
button.BackgroundColor = UIColor.White;
button.SetTitleShadowColor(UIColor.Green, UIControlState.Normal);
baseView.AddSubview(button);
}

private void addSmallMonthButton(SmallMonthButton button, PointF position)
{

SizeF size = setSize(40.0f, 40.0f);

DateTime date = currentMonth;
date = date.AddMonths(button.number);
month = constants.GetNameOfMonth(date.Month, true);

button.SetTitle(month, UIControlState.Normal);
button.Frame = new RectangleF(position, size);
button.BackgroundColor = UIColor.White;
button.SetTitleShadowColor(UIColor.Green, UIControlState.Normal);
baseView.AddSubview(button);
}
}
}

我在这里有点迷路,真的很想得到一些帮助,或者只是提示我应该往哪个方向走。

亲切的问候乔纳斯

最佳答案

检查添加按钮的边界/框架。虽然它是一个 scrollView,所以我想如果你能看到你的按钮就没问题了。

是否设置断点

    smallDottedMonthButtonNr1.SetTitle("Test", UIControlState.Normal);

有帮助吗?

您能 100% 确定没有其他 View 覆盖您的按钮吗?

此外,出于好奇,尝试 TouchDown 而不是 TouchUpInside。

关于c# - 为什么我的 UIButton 没有响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13147987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com