11

我在 UIView 中有一个 UIButton,它位于我从 .xib 文件分配和初始化的 UIViewController 中。

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

其他事件也不起作用。“Touch Drag Enter”、“Touch Drag Exit”、“Touch Up Outside”等。仅 Touch Down。

有谁知道为什么会这样?


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

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

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

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

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

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

当我运行并测试按钮并收到“Button Touch Down Event Fired”日志消息时。

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

问候,丰富

4

5 回答 5

20

很抱歉迟到了,但我也有同样的问题。就我而言,它是UITapGestureRecognizer分配给父视图的。因此,检查识别器也是一个好主意。

于 2012-07-26T11:09:15.643 回答
6

您正在发布 newViewController。

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

于 2011-03-04T00:12:07.453 回答
2

你提到了储蓄;进行更改后是否保存了 xib 和 MyViewController 文件?通常,当这样的事情对我不起作用时,我发现我没有将 xib 保存在 IB 中,也没有将类文件保存在 XCode 中。

于 2011-01-08T20:18:45.277 回答
2

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

看起来您的 UIButton 仅接收 touchesBegan 事件,并且该事件在接收到 touchesEnded 之前被某些东西取消了。

像 UIScrollView 这样的东西通常会在需要转发到它的子视图的触摸和应该由它自己处理的拖动之间做出决定时。

于 2011-03-20T11:51:18.803 回答
0

大声笑,这是一个愚蠢的解决方案,但在 xib 中,我将它链接到外面的 buttonTouchUp,这就是问题所在。也许这会有所帮助:)

于 2011-08-18T14:03:01.217 回答