我在XCode中创建了一个新项目,并使用新的Storyboard功能创建了两个不同的视图控制器。
第一个View Controller附加到主文件( ViewController.h,Viewcontroller.m )。第二个View Controller附加到它自己的.h / .m文件集( NewUserController.m / .h )
现在针对我在过去几小时内找不到解决方案的问题;
我在第二个视图控制器中添加了一个按钮,并将按钮附加到IBAction( verifyNumber )。当我附加'触及内部'事件时,IBAction永远不会被触发。但是,当我附上“触及”时,一切正常......
两个View Controller都选择了“启用了用户交互”,除了按钮,第二个视图控制器不包含任何其他元素。另外,我的手动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可以处理所有事件(触摸内部)。
识别器是否会以某种方式阻止任何“点击”事件覆盖对象(例如UIButton)?
答案 0 :(得分:3)
我有一些想法,
1)你为什么要:
- (IBAction)backgroundTap;
//- (IBAction)verifyNumber;
- (IBAction)verifyNumber:(id)sender;
verifyNumber
和verifyNumber:(id)sender
之间存在差异,它们可以同时存在,并且都可以在nib
中连接。
2)您是否在视图上使用任何UIGestureRecoginzers?
3)此按钮是UIButton的自定义按钮或子类吗?
4)(我真的认为这不会有助于解决你的问题,这只是一个很好的做法,而且我已经输入了:))使用视图属性来检查方法是否被调用是最不确定的。尝试在IBAction
方法中添加日志语句,如:
- (IBAction)verifyNumber:(id)sender; {
NSLog(@"verifyNumber:");
inputNumber.text = @"testing";
}