Xcode 6按钮目标不起作用

时间:2014-09-17 22:32:38

标签: ios objective-c uibutton

我刚刚安装了xcode 6来测试我的应用程序如何使用它。

初始页面上的facebook登录按钮似乎不起作用。

这是我的代码:

@property (nonatomic, strong) UIButton *loginButton;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.loginButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 200, 70)];
    self.loginButton.center = self.view.center;
    [self.loginButton setImage:[UIImage imageNamed:@"login_fb.png"] forState:UIControlStateNormal];

    [self.view addSubview:self.loginButton];
    [self.loginButton addTarget:self action:@selector(loginButtonPressed) forControlEvents:UIControlEventTouchUpInside];
 }

-(void)loginButtonPressed
{
      // perform login
}

重要的是要注意应用程序从不同的视图开始。在该视图控制器中,我检查用户是否存在,如果不存在,则显示登录视图。这是代码:

 if ([DCTUserIdentity currentIdentity] == nil) {
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    DCTInitialLoginVC *vc = [sb instantiateViewControllerWithIdentifier:@"InitialLogin"];
    vc.delegate = self;
    [self presentViewController:vc animated:NO completion:^{}];
}

我在loginButtonPressed函数中放了一个断点,当我尝试点击按钮时它永远不会被击中......任何想法都在发生?

2 个答案:

答案 0 :(得分:0)

这似乎不是一个错误,但使用Xcode 6定位iOS 7设备的不兼容问题。ecotax's post更详细地描述了这一点,但这是Apple DTS的回复:

  

在iOS 7中,单元格的内容视图通过自动调整蒙版自行调整大小。在iOS 8中,这已更改,单元格停止使用自动调整蒙版并开始调整layoutSubviews中的内容视图大小。如果在iOS 8中对nib进行编码然后在iOS 7上对其进行解码,则您将拥有一个没有自动调整掩码的内容视图,并且没有其他方法可以自行调整大小。因此,如果您更改了单元格的框架,则内容视图将不会跟随。

     

正在部署回iOS 7的应用程序必须通过调整内容视图本身,添加自动调整掩码或添加约束来解决此问题。

解决方法:

- (void)awakeFromNib
{
   // Fix for iOS 7 devices targeted using Xcode 6.
   self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}

答案 1 :(得分:0)

试试这段代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.loginButton = [UIButton buttonWithType:UIButtonTypeCustom];
    self.loginButton.frame = CGRectMake(0, 0, 200, 70);
    self.loginButton.center = self.view.center;
    [self.loginButton setImage:[UIImage imageNamed:@"login_fb.png"]
                      forState:UIControlStateNormal];

    [self.view addSubview:self.loginButton];
    [self.loginButton addTarget:self action:@selector(loginButtonPressed:)     
               forControlEvents:UIControlEventTouchUpInside];

}

用强指针抓住你的DCTInitialLoginVC对象。