未收到UIButton TouchDown事件

时间:2010-08-27 21:19:50

标签: c# iphone xamarin.ios

我正在以编程方式为我的应用创建一个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没有连线?这也不会发生。

2 个答案:

答案 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方法'