UIButton事件'Touch Up Inside'无效。 'Touch Down'工作得很好

时间:2010-10-11 09:19:38

标签: iphone uikit uibutton touch ibaction

我在UIView中有一个UIButton,它位于UIViewController中,我已经从.xib文件中分配和输入。

当将IBAction挂钩到UIButton的“Touch Down”事件时,它会正确触发。但如果我把它连接到'Touch Up Inside'事件,它就不会响应。

其他事件也不起作用。 '触摸拖动输入','触摸拖动退出','触摸外部'等仅触摸下来。

有谁知道为什么会这样?


按钮是视图控制器中的简单圆角矩形按钮。 我已经加载了视图控制器:

-(void) pushNewViewController
{
    MyViewController* newViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    [self.view addSubview:newViewController.view];
    [newViewController release];
}

我在IB中将此按钮添加到圆形rect按钮到MyViewController。 我创建了以下IBActions:

-(IBAction) buttonTouchDown:(id)sender
{
    NSLog(@"Button Touch Down Event Fired.");
}

-(IBAction) buttonTouchUpInside:(id)sender
{
    NSLog(@"Button Touch Up Inside Event Fired.");
}

在IB I菜单中单击按钮并将Touch Down插座拖动到MyViewController并选择buttonTouchDown:。保存了IB xib。

当我运行并测试按钮并获得“按下触摸事件触发事件”日志消息时。

但是当我回到IB并将Action更改为Touch Up Inside并将其连接到buttonTouchUpInside:IBAction并保存。我再次测试,没有得到回应。

此致 富

5 个答案:

答案 0 :(得分:16)

我很抱歉迟到但我有完全相同的问题。在我的例子中,它被分配给父视图UITapGestureRecognizer。因此,检查识别器也是个好主意。

答案 1 :(得分:6)

您正在发布newViewController。

虽然将newViewController.view添加为子视图将保留视图,但newViewController对象的保留计数为0。

答案 2 :(得分:2)

你提到了储蓄;在进行更改后,您是否保存了xib和MyViewController文件?通常,当这样的事情停止为我工作时,我发现我没有保存IB中的xib或XCode中的类文件。

答案 3 :(得分:2)

您是否实施了任何触摸事件处理程序? 你的MyViewController的代码?

看起来你的UIButton只接受touchesBegan 事件和事件被之前的事情取消了 它可以收到touchesEnded。

像UIScrollView这样的东西通常都是这样的 在需要转发的触摸之间做出决定 这是应该处理的子视图和拖动 本身。

答案 4 :(得分:0)

很好,这是一个愚蠢的解决方案,但在xib我把它连接到buttonTouchUp外面,这导致了问题。也许这会有所帮助:)。