我在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并保存。我再次测试,没有得到回应。
此致 富
答案 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)