无论我做什么,都不会调用UIButton选择器

时间:2013-12-07 17:36:12

标签: ios iphone objective-c uibutton

我知道这个问题在很多次之前被问过,但我找不到解决问题的方法。我不是iOs的新手,这应该是非常微不足道的东西,但它让我疯狂和疯狂:)。好吧,我有C类,它是UIViewController的子类。在它的视图中有一个UIScrollView,在该滚动视图中我将类B和A也放在UIViewController的子类中,我这样做:

a = [[A alloc] initWithNibName:@"A" bundle:nil];
[a setDelegate:self];
[self addChildViewController:a];
[a.view setFrame:CGRectMake(2*vwMainScroller.frame.size.width, 0, a.view.frame.size.width, a.view.frame.size.height)];
[vwMainScroller addSubview:a.view];

b = [[B alloc] initWithNibName:@"B" bundle:nil];
[b setDelegate:self];
[self addChildViewController:b];
[b.view setFrame:CGRectMake(vwMainScroller.frame.size.width, 0, b.view.frame.size.width, speedScreen.view.frame.size.height)];
[vwMainScroller addSubview:b.view];

A类和B类在viewDidLoad方法中以编程方式添加了视图上的按钮,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *btnChangeColor = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 460)];
    [btnChangeColor addTarget:self action:@selector(Btn) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnChangeColor];
}

-(void)Btn
{
    NSLog(@"I am the selector and I have been called");
}

但是当我按下A类按钮时,从不调用选择器,但是当我按下B类按钮时,选择器就像它应该被调用一样。 我试过了:

  • 将按钮放在xibs上
  • 为我的代码中的每个视图启用用户互动 - 它已经启用 - >没有帮助
  • 绘制按钮以查看它们是否应该在哪里 - >他们是
  • 重新启动计算机和xCode
  • 在设备和模拟器上运行

在我发现他们也没有打电话给他们的选择器之后我尝试在A类的IB中添加一些其他按钮之后,没有任何帮助,总是同样的事情,按钮在B级上工作而不在A级上工作选中“显示突出显示的触摸”框并猜测是什么,当我触摸它们时它们没有发光。所以,我看到有些东西正在吃我的触摸事件但是没有任何想法如何继续调试此事。请帮帮我:))

2 个答案:

答案 0 :(得分:0)

尝试在滚动视图中设置vwMainScroller.delaysContentTouches = Yes

添加

[a.view setUserInteractionEnabled:YES];

[b.view setUserInteractionEnabled:YES]; 

在将其作为子视图添加到scrollView之前,如果它无法帮助您将视图控制器设置为UIScrollView的委托并添加此项:

-(BOOL)touchesShouldCancelInContentView:(UIView *)view
{
    return ![view isKindOfClass:[UIButton class]];
}

答案 1 :(得分:-2)

好的,不要再想了,因为这就是你需要做的才能解决这个问题。我停止思考并创建了一个新类“Anew”,复制了A类中的所有代码,创建了完全相同的xib,通过复制A.xib中的元素,删除了A类并以与A类完全相同的方式实现了Anew。现在一切正常。所以答案是,当你花费4个小时尝试解决一些像这样微不足道的事情时,你尝试了所有可能的方法,你可以想象和其他人建议,没有任何帮助,是时候停止思考并开始删除导致问题可能比你能达到的更深......