无法连接IBAction进行查看

时间:2014-02-19 22:52:57

标签: ios xcode

我是iOS新手,我正在关注this tutorial

以下是我尝试将IBAction连接到我的视图的截图。

每当我触摸视图时(即关闭键盘),我都想执行方法releaseKeyboard

我没有使用故事板。

screenshot

我的档案:

  • challAppDelegate.h
  • challAppDelegate.m
  • challViewController.h
  • challViewController.m
  • challViewController.xib

challAppDelegate.h

#import <UIKit/UIKit.h>

@interface challAppDelegate : UIResponder <UIApplicationDelegate>
{
    UINavigationController *navigationController;
}

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) UINavigationController *navigationController;

@end

challAppDelegate.m

#import "challAppDelegate.h"
#import "challViewController.h"

@implementation challAppDelegate

@synthesize window = _window;
@synthesize navigationController;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIViewController *rootController =
    [[challViewController alloc]
     initWithNibName:@"challViewController" bundle:nil];

    navigationController = [[UINavigationController alloc]
                            initWithRootViewController:rootController];

    self.window = [[UIWindow alloc]
                   initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];
    return YES;

}
...
...

challViewController.h

#import <UIKit/UIKit.h>

@interface challViewController : UIViewController

@property(nonatomic, retain) IBOutlet UITextField *signInEmailAddress;
@property(nonatomic, retain) IBOutlet UITextField *signInPassword;

@property(nonatomic, retain) IBOutlet UIButton *signInSignInButton;
@property(nonatomic, retain) IBOutlet UIButton *signInRegisterButton;

-(void) releaseKeyboardAction;

-(IBAction) signInAction:(int)sender;

-(IBAction) registerAction:(int)sender;

-(IBAction) releaseKeyboard:(id)sender;

@end

challViewController.m

#import "challViewController.h"

@interface challViewController ()

@end

@implementation challViewController

@synthesize signInEmailAddress; // cria os getters e setters
@synthesize signInPassword; // cria os getters e setters

@synthesize signInSignInButton; // cria os getters e setters
@synthesize signInRegisterButton; // cria os getters e setters

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    self.title = @"Sign In";
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)releaseKeyboardAction
{
    [signInEmailAddress resignFirstResponder];
    [signInPassword resignFirstResponder];
}

- (IBAction)releaseKeyboard:(id)sender
{
    [self releaseKeyboardAction];
}

- (IBAction)registerAction:(int)sender
{
    //
}

- (IBAction)signInAction:(int)sender
{
    //
}

@end

我做错了什么?

由于

2 个答案:

答案 0 :(得分:5)

您可以将UITapGestureRecognizer添加到self.view

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    self.title = @"Sign In";

    UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(releaseKeyboardAction)];
    [self.view addGestureRecognizer:gesture];
}

手势识别器的目标指向您的releaseKeyboardAction方法。

答案 1 :(得分:3)

只需在身份检查器中将视图的类从UIView更改为UIControl,然后即可连接IBActions