添加限制某些 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 中无法正常工作

Swift Playgrounds UIButton 无法正常工作

UIButton 在 iOS 7 中无法正常工作

UITableView 自定义单元格中的 UIButton 触摸无法正常工作