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

Ric*_*oks 11 iphone touch uibutton uikit 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];
}
Run Code Online (Sandbox Code Playgroud)

我在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.");
}
Run Code Online (Sandbox Code Playgroud)

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

当我运行并测试按钮并获得"Button Touch Down Event Fired"日志消息时.

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

此致,Rich

Iva*_*tin 18

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

  • 很好,这是正确的方式.我检查了gestureRecognizer属性,发现它们是一个"cancelsTouchesInView",默认情况下设置为YES,将其更改为NO,这解决了我的问题. (5认同)

小智 6

你正在发布newViewController.

虽然添加newViewController.view作为一个子视图将保留视图中,newViewController对象将具有0的保留计数.


Bil*_*ley 2

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