UIButton在第二个视图控制器- Touch Up Inside不工作(Touch Down工作)



我在XCode中创建了一个新项目,并使用新的storyboard功能创建了两个不同的视图控制器。

第一个视图控制器附加到主文件(ViewController.h, Viewcontroller.m)。第二个视图控制器被附加到它自己的。h/集合。(NewUserController.m/.h)

对于过去几个小时我一直没能找到解决方案的问题;

我在第二个视图控制器中添加了一个按钮,并将按钮附加到IBAction (verifyNumber)。当我附加'内部触摸'事件时,IBAction永远不会被触发。然而,当我附加'Touch Down'时,一切都很好…

两个视图控制器都选择了"用户交互启用",除了按钮之外,第二个视图控制器不包含任何其他元素。此外,我的手动performSegueWithIdentifier正在工作(从view1切换到view2)。

谁能指出哪里出了问题?

代码:

ViewController.m

- (void)firstStartup {
    // Future use for getting userID
    // Switch to loginview
    [self performSegueWithIdentifier:@"segueLogin" sender:self];       
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // Fire firstStartup
    [self firstStartup];
}

NewUserController.h

#import <UIKit/UIKit.h>
@interface NewUserController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *inputNumber;
- (IBAction)backgroundTap;
//- (IBAction)verifyNumber;
- (IBAction)verifyNumber:(id)sender;
@end

NewUserController.m

#import "NewUserController.h"
@implementation NewUserController
@synthesize inputNumber;

// Collect User data & Start Request
- (IBAction)verifyNumber:(id)sender; {
    inputNumber.text = @"testing";
}
- (IBAction)backgroundTap {
    [inputNumber resignFirstResponder];    
}

由于NJones的反应,我又测试了一些,并删除了我在第二个视图上呈现的手势识别器。删除此识别器后,UIButton与所有事件(内部触摸)。

识别器是否以某种方式阻止任何'tap'事件覆盖对象(如UIButton)?

我有一些想法,

你为什么有:

    - (IBAction)backgroundTap;
    //- (IBAction)verifyNumber;
    - (IBAction)verifyNumber:(id)sender;

verifyNumberverifyNumber:(id)sender是有区别的,它们可以同时存在,也可以在nib中连接。

2)您是否在视图上使用任何UIGestureRecoginzers ?

3)这个按钮是自定义按钮还是UIButton的子类?

4)(我真的不认为这将有助于解决你的问题,这只是一个很好的实践,我已经打字:))使用视图属性来检查一个方法是否被调用是不确定的。尝试在IBAction方法中放入一个日志语句,如下所示:

- (IBAction)verifyNumber:(id)sender; {
    NSLog(@"verifyNumber:");
    inputNumber.text = @"testing";
}

最新更新