单击按钮时,UIButton @selector从未动作

时间:2012-05-02 16:20:55

标签: iphone objective-c uibutton selector

我有一个UIbutton,它调用同一个类中的方法,我使用@selector并传递方法名称,我设置了一个断点,并注意到根本没有达到该方法,我写了这个代码和我认为它工作正常,但它永远不会到达方法体:

- (IBAction)setEndTime:(id)sender {
[self performSegueWithIdentifier:@"showEndTimePicker" sender:sender];
UIViewController *TimePickerVC=[self.storyboard instantiateViewControllerWithIdentifier:@"setEndTime"];
packtimePicker=(UIDatePicker*)[TimePickerVC.view  viewWithTag:2];
NSLog(@"PickerTag%i",packtimePicker.tag);
self.finishedTime=packtimePicker.date;
//     NSLog(@"Date returned is ---> %@",finishedTime);
UIButton *btn=(UIButton*)[TimePickerVC.view viewWithTag:3];
NSLog(@"Button Tag%i",btn.tag);
[btn addTarget:self action:@selector(setSelectedValueToAttr:)  forControlEvents:UIControlEventTouchUpInside];

方法:

-(void)setSelectedValueToAttr:(UIButton *) sender{
finishedTime=packtimePicker.date;
NSLog(@"Time returned----> %@",finishedTime);}
 }

3 个答案:

答案 0 :(得分:0)

您是否检查过是否收到了正确的按钮?你的日志显示什么?它应该是ButtonTag3 - 是这样的吗?

类中的方法setSelectedValueToAttr:是否由self引用?

如果一切正确,你的按钮可能只是因为你的视图结构而没有得到任何接触。

答案 1 :(得分:0)

尝试更改按钮的标题以确认您确实找回了所需的按钮。

[btn setTitle:@"test" forState:UIControlStateNormal]; 

我不相信标签记录确认您正在取回您认为正在获得的确切按钮。这应该缩小问题的范围。

另外,确认按钮及其父视图的userInteractionEnabled设置为YES。

答案 2 :(得分:0)

您肯定分配了错误的标签号。查看下面的示例,在将其转换为UIButton之前检查类的类型。

 UIView *someView = [self.view viewWithTag:5];

    if([someView isKindOfClass:[UIButton class]])
    {
        UIButton *button = (UIButton *) someView; 

        NSLog(@"uibutton");
    }
    else 
    {
        // some other control 
    }