- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 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/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!