gpt4 book ai didi

iphone - UIButton添加目标:action:forControlEvents: results in [NSObject doesNotRecognizeSelector:]

转载 作者:行者123 更新时间:2023-12-03 18:48:39 25 4
gpt4 key购买 nike

尝试了很多方法,还是没有结果。

因此,我在 UIViewController 的子类中以编程方式创建了以下按钮:

    rightButton = [UIButton buttonWithType:UIButtonTypeCustom];
rightButton.frame = CGRectMake(0.0, 0.0, 110.0, 40.0);
rightButton.titleLabel.font = [UIFont fontWithName:GAME_FONT_NAME_STRING size:20.0];
[rightButton setTitle:@"MyTitle" forState:UIControlStateNormal];
rightButton.backgroundColor = [UIColor clearColor];
[rightButton setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
[rightButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[rightButton setBackgroundImage:normalImage forState:UIControlStateNormal];
[rightButton setBackgroundImage:highlightedImage forState:UIControlStateHighlighted];
[rightButton addTarget:self action:@selector(myButton) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:rightButton];

选择器所在位置:

- (void)myButton;

我尝试了一切:

- (void)myButton;
- (void)myButton:(id)sender;
- (void)myButton:(id)sender forEvent:(UIEvent *)event;
- (IBAction)myButton;
- (IBAction)myButton:(id)sender;
- (IBAction)myButton:(id)sender forEvent:(UIEvent *)event;

当然还有相应的选择器:

[rightButton addTarget:self action:@selector(myButton) forControlEvents:UIControlEventTouchUpInside];
[rightButton addTarget:self action:@selector(myButton:) forControlEvents:UIControlEventTouchUpInside];
[rightButton addTarget:self action:@selector(myButton:forEvent:) forControlEvents:UIControlEventTouchUpInside];
[rightButton addTarget:self action:@selector(myButton) forControlEvents:UIControlEventTouchUpInside];
[rightButton addTarget:self action:@selector(myButton:) forControlEvents:UIControlEventTouchUpInside];
[rightButton addTarget:self action:@selector(myButton:forEvent:) forControlEvents:UIControlEventTouchUpInside];

结果始终是未捕获的异常 - [NSObject doesNotRecognizeSelector:]。然而,程序通常的回溯是:

#0  0x92a6bedb in objc_msgSend ()
#1 0x03b0a430 in ?? ()
#2 0x00306b4e in -[UIControl sendAction:to:forEvent:] ()
#3 0x00308d6f in -[UIControl(Internal) _sendActionsForEvents:withEvent:] ()
#4 0x00307abb in -[UIControl touchesEnded:withEvent:] ()
#5 0x002bcddf in -[UIWindow _sendTouchesForEvent:] ()
#6 0x002a67c8 in -[UIApplication sendEvent:] ()
#7 0x002ad061 in _UIApplicationHandleEvent ()
#8 0x02498d59 in PurpleEventCallback ()
#9 0x01cabb80 in CFRunLoopRunSpecific ()
#10 0x01caac48 in CFRunLoopRunInMode ()
#11 0x02497615 in GSEventRunModal ()
#12 0x024976da in GSEventRun ()
#13 0x002adfaf in UIApplicationMain ()

那么这个按钮有什么问题呢?

PS:我使用的是iPhone SDK 3.1.3

<小时/>

更新!

AppDelegate 中的以下代码(界面中没有声明):

- (void)applicationDidFinishLaunching:(UIApplication *)application {
UIButton *test = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 100.0)];
[test setTitle:@"Title" forState:UIControlStateNormal];
UIImage *bg = [UIImage imageNamed:...];
[test setBackgroundImage:bg forState:UIControlStateNormal];
[test addTarget:self action:@selector(testAction) forControlEvents:UIControlEventTouchUpInside];
[window addSubview:test];
[test release];
[window makeKeyAndVisible];
}

- (void)testAction {
NSLog(@"Write something...");
}

完美运行!

但是如果我使用相同的代码创建一个空的 UIViewController:

- (void)viewDidLoad {
UIButton *test = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 100.0)];
[test setTitle:@"Title" forState:UIControlStateNormal];
UIImage *bg = [UIImage imageNamed:...];
[test setBackgroundImage:bg forState:UIControlStateNormal];
[test addTarget:self action:@selector(testAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:test];
[test release];
[window makeKeyAndVisible];
}

- (void)testAction {
NSLog(@"Write something...");
}

我收到这个神秘的错误。 :-( 救命!

最佳答案

一篇旧帖子,现在可能已经全部排序,但还有另一个问题会导致崩溃:

[test addTarget:self action:@selector(testAction) forControlEvents:UIControlEventTouchUpInside]

不正确。 action:@selector(testAction) 必须有一个冒号,因此:

action:@selector(testAction:)

否则你会遇到无法识别的选择器崩溃 - 这就是你所得到的..

关于iphone - UIButton添加目标:action:forControlEvents: results in [NSObject doesNotRecognizeSelector:],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3046335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com