【问题标题】:UIButton in second View Controller - Touch Up Inside not working (Touch Down does)第二个视图控制器中的 UIButton - Touch Up Inside 不起作用(Touch Down 可以)
【发布时间】:2011-11-19 22:15:58
【问题描述】:

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

第一个 View Controller 附加到主文件(ViewController.h、Viewcontroller.m)。第二个视图控制器附加到它自己的一组 .h/.m 文件 (NewUserController.m/.h)

现在解决我在过去几个小时内无法找到解决方案的问题;

我在第二个视图控制器中添加了一个按钮,并将该按钮附加到 IBAction (verifyNumber)。当我附加 'Touched Up Inside' 事件时,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 可与所有事件一起使用(Touched Up Inside)。

识别器是否以某种方式阻止任何“点击”事件覆盖对象(例如 UIButton)?

【问题讨论】:

    标签: iphone objective-c ios uiviewcontroller uibutton


    【解决方案1】:

    我有一些想法,

    1) 为什么会有:

        - (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";
    }
    

    【讨论】:

    • 1) 我已经注释掉了第一个 IBAction 以测试在通过发件人时是否会有任何差异。目前唯一的功能(删除了其余的)是:-(IBAction)verifyNumber:(id)sender {-这个也连接到按钮动作(dubbel检查)2)是的,我已经添加了一个手势识别器检测点击的视图 -> 这会激活 (IBAction)backgroundTap -> 目的:在视图上隐藏点击时的键盘 3) UIButton 的子类 4) 我在函数中添加了一些日志记录以记录输入值,这样更好当然 === 不幸的是没有区别..
    • 在您的回复之后,我又测试了一些(删除了视图的手势识别器),现在按钮作为“广告”工作(Touched Up Inside 触发该功能)
    猜你喜欢
    • 2011-04-23
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多