添加限制某些 uibuttons 无法正常工作的 uiview iphone monotouch
Posted
技术标签:
【中文标题】添加限制某些 uibuttons 无法正常工作的 uiview iphone monotouch【英文标题】:Adding a uiview that contions some uibuttons not works correctly iphone monotouch 【发布时间】:2013-03-04 20:18:20 【问题描述】:我正在使用此代码在 UIView
中添加 3 个 UIButtons
,然后将它们添加到我的屏幕上。
UIView buttonsContainerView = new UIView (new Rectangle (0,0,(int) this.View .Frame .Width ,40));
UIButton b;
for(int i=0;i<3;i++)
b= new RltTabBarButton ();
b.ImageEdgeInsets = new UIEdgeInsets (5,5,5,100);
if(i==0)
b.SetBackgroundImage (UIImage .FromFile ("ProjectRes/Images/Placeholder.png"),
UIControlState.Normal );
b.TitleLabel .Text = "Details";
b.Frame = new RectangleF (0,350,108,40);
b.Enabled =true ;
else if(i==1)
b.SetBackgroundImage (UIImage .FromFile ("ProjectRes/Images/Placeholder.png"),
UIControlState.Normal );
b.TitleLabel .Text = "Map";
b.Frame = new RectangleF (110,350,100,40);
b.Enabled =true ;
else if(i==2)
b.SetBackgroundImage (UIImage .FromFile ("ProjectRes/Images/Placeholder.png"),
UIControlState.Normal );
b.TitleLabel .Text = "Agent";
b.Frame = new RectangleF (212,350,108,40);
b.Enabled =true ;
buttonsContainerView .AddSubview (b);
this.View .AddSubview (buttonsContainerView );
当我运行我的应用程序时。添加到正确位置的按钮。但他们的TitleLable
上不包含任何Text
。虽然我设置了这个项目。而且它们看起来像一些图像,因此我无法单击它们并与它们进行交互。
我设置了他们的Enabled
字段true
,但没有任何更改。
编辑: 根据答案,我将代码更改为:
UIView buttonsContainerView = new UIView (new Rectangle (0,0,(int) this.View .Frame .Width ,40));
UIButton DetailsButton= new UIButton (UIButtonType.RoundedRect );
DetailsButton.ImageEdgeInsets = new UIEdgeInsets (5,5,5,100);
DetailsButton.SetBackgroundImage (UIImage .FromFile ("ProjectRes/Images/Placeholder.png"),
UIControlState.Normal );
DetailsButton.SetTitle ("Details",UIControlState.Normal );
DetailsButton.Frame = new RectangleF (0,350,108,40);
buttonsContainerView .AddSubview (DetailsButton);
UIButton MapButton= new UIButton (UIButtonType.RoundedRect );
MapButton.ImageEdgeInsets = new UIEdgeInsets (5,5,5,100);
MapButton.SetBackgroundImage (UIImage .FromFile ("ProjectRes/Images/Placeholder.png"),
UIControlState.Normal );
MapButton.SetTitle ("Map",UIControlState.Normal );
MapButton.Frame = new RectangleF (110,350,100,40);
buttonsContainerView .AddSubview (MapButton);
UIButton AgentButton= new UIButton (UIButtonType.RoundedRect );
AgentButton.SetBackgroundImage (UIImage .FromFile ("ProjectRes/Images/Placeholder.png"),
UIControlState.Normal );
AgentButton.SetTitle ("Agent",UIControlState.Normal );
AgentButton.Frame = new RectangleF (212,350,108,40);
buttonsContainerView .AddSubview (AgentButton);
this.View .AddSubview (buttonsContainerView );
但没有任何变化。我们无法点击按钮。它们看起来像图像。我相信它与buttonsContainerView
以及它的EnableInputClicksWhenVisible
有关。当我在这个视图中调试应用程序时,调试器在想要执行它的值时会有一些异常。
我只能复制这个标题:
MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown. Name: NSInvalidArgumentException Reason: -[UIView enableInputClicksWh…
我不知道如何解决它。
【问题讨论】:
【参考方案1】:我明白了。
问题是我设置了buttonsContainerView
( 包含按钮的视图
) 40. 而是设置按钮 350 的高度位置。
当按钮的框架在其父视图的框架之外时,它不会响应您的触摸。
欲了解更多信息:UIButton inside UIView not clickable
【讨论】:
【参考方案2】:这应该是评论,但我还不能评论。我发现你的实现很奇怪,我倾向于认为它会导致 ARC 行为不端(我假设 ARC,因为你没有任何发布代码)。为什么不直接创建 3 个 UIButton 而不是这个循环,然后将所有这些添加到您的 UIView 中?
【讨论】:
感谢您的回复。我是 monotouch 和 iphone 的新手。我不知道什么是ARC。在此之前,我在单独的按钮中实现它们。这样,他们可以点击,但他们的文字也不会出现。 :(【参考方案3】:你需要使用 SetTitle(); UIButton 的功能,以使其工作。否则,不会设置 TitleLabel。
button.SetTitle("MyTitle",UIControlState.Normal);
【讨论】:
我希望这个文本出现在所有州。通过使用此命令,标题仅以一种状态存在。在此之前,我使用 TitleLable.Text 显示所有州的标题。 现在在 SetTitle 命令中,当我使用“正常状态”时,单击按钮时会出现文本。我没想到会这样。 如果你没有为其他状态设置标题,它会保留这个。如果单击时不想要文本,则需要为另一个状态设置标题 SetTitle("", UIControlState.Highlighted)以上是关于添加限制某些 uibuttons 无法正常工作的 uiview iphone monotouch的主要内容,如果未能解决你的问题,请参考以下文章
将自定义图像 UIButtons 添加到自定义 UIToolbar 无法正常工作
UIButton.addTarget 无法正常工作。似乎是一个时间问题?
UIButton 圆角半径在 CustomClass 中无法正常工作