我正在以编程方式为我的应用创建一个UIButton。我在网上找到的几个例子看起来很简单。按照这些示例,我可以创建一个很好的按钮但它无法为我已连线的TouchDown事件执行操作。以下是父视图的ViewDidLoad中按钮的代码:
_searchButton = UIButton.FromType(UIButtonType.RoundedRect);
_searchButton.Frame = new RectangleF(swidth / 2 - 50f, 140f, 100f, 40f);
//_searchButton.BackgroundColor = UIColor.Clear;
_searchButton.SetTitle("Search", UIControlState.Normal);
_searchButton.SetTitleColor(UIColor.Black, UIControlState.Normal);
_searchButton.UserInteractionEnabled = true;
_searchButton.TouchDown += delegate
{
Console.WriteLine("wicked");
};
this.View.AddSubview(_searchButton);
我唯一能想到的可能是UserInteractionEnabled的设置。但它们似乎默认设置为true。 (对按钮显式设置为true无效。)
我在这里做错了什么?
我应该补充一点,当我点击它时按钮应该变成蓝色,即使TouchDown没有连线?这也不会发生。
答案 0 :(得分:0)
更多背景然后答案。搜索按钮有一个textfield兄弟,都由容器UIViewController保存。该父容器是TableViewController的兄弟。 uivc和tvc都由外部容器保存。
我的代码是
View.AddSubview(uivc);
View.AddSubview(tvc);
在最外层的容器中。
表工作正常,uivc控件没有。如果我撤销订单,两者都可以正常工作!
View.AddSubview(tvc);
View.AddSubview(uivc);
去图。
答案 1 :(得分:0)
处理TouchDown事件的方法是使用目标操作方法。这是一个例子:
// button action method declaration
UIButton *buttonTemp = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[buttonTemp addTarget:self action:@selector(favoriteTapped:event:)
//method to fire when the button is touched
- (void)favoriteTapped:(id)sender event:(id)event
{
NSLog(@"favoriteTapped");
}
简而言之,按钮声明中的第二行说:“触摸按钮时,触发'favoriteTapped方法'