일부 iPhone을 테스트하기 위해 기본 iPhone 응용 프로그램에서 작업하고 있으며 이해할 수 없거나 대답을 찾을 수 없다는 오류가 발생합니다. 나는 IB를 전혀 사용하지 않고있다. (생성하는 MainWindow.xib는 제외하고).iPhone - 인식 할 수없는 선택기, "addTarget에 응답하지 않을 수 있습니다."
지금 당장 가능한 한 기본입니다.
mainAppDelegate.h
#import <UIKit/UIKit.h>
#import "mainViewController.h"
@interface mainAppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
mainViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) mainViewController *viewController;
@end
mainAppDelegate.m
#import "mainAppDelegate.h"
@implementation mainAppDelegate
@synthesize window;
@synthesize viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.viewController = [[mainViewController alloc] init];
[window addSubview:viewController.view];
[window makeKeyAndVisible];
return YES;
}
- (void)dealloc {
[viewController release];
[window release];
[super dealloc];
}
@end
mainViewController.h
#import <UIKit/UIKit.h>
@interface mainViewController : UIViewController {
}
- (void)showMenu;
@end
mainViewController.m
#import "mainViewController.h"
@implementation mainViewController
- (void)loadView {
UIScrollView *mainView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
mainView.scrollEnabled = YES;
self.view = mainView;
self.view.backgroundColor = [UIColor grayColor];
[self.view setUserInteractionEnabled:YES];
[self.view addTarget:self action:@selector(showMenu) forControlEvents:UIControlEventTouchDown];
[mainView release];
}
- (void)showMenu {
NSLog(@"Show Menu");
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
[super dealloc];
}
@end
,
지금, 나는이 줄에 경고를 얻을 : 조치 : : forControlEvents :
[self.view addTarget:self action:@selector(showMenu) forControlEvents:UIControlEventTouchDown];
-addTarget '으로 UIView가 응답하지 않을 수 있습니다'말한다 '. 그리고 UIView 하위 클래스가 확실히 addTarget에 응답 할 수 있기 때문에 의미가 없습니다. loadView가 끝날 때까지 release하지 않기 때문에 존재해야하는 self.view에서 호출하고 있습니다.
추적을 보면 실제 에러 것을 보여준다 (심지어 후 상기 제어기에 의해 유지해야한다) - [있는 UIScrollView addTarget을 : 동작 : forControlEvents는 :] : 미정 선택기 0x5f11490
그래서 그것을 인스턴스에 보내 선택기 자체에 문제가있는 것 같지만 선택기에는 아무런 문제가 없습니다.
나는 이것에 상당히 좌절감을 느낀다. 그리고 어떤 도움이 좋을 것이다.
+1에 대한 'UIControl'. 더 깊은 통찰력으로, 'UIControl'은 터치 다운이나 터치 업과 같은 모든 'UIControlEvents'를 제공합니다. 객체가'UIControl'의 서브 클래스가 아니면, 그 객체를 사용할 수 없습니다. 빠른 예제는 뷰가있는 XIB를 여는 것입니다. 보기를 클릭하고 검사기 창으로 이동하면 해당 제어 이벤트가 없음을 알 수 있습니다.이제 검사기 창의 마지막 탭으로 이동하여 UIView 대신 'UIControl' 하위 클래스로 만들면 마술처럼 모든 이벤트를 가질 수 있습니다. – iwasrobbed
고마워요. 정확히 제가 알아야 할 것이 었습니다. 나는 그것을 확인 했어야했다. '수업은 항상 대문자로 시작합니다.'- 그 규칙은 필요한가요? –
Objective-C 협약, 많은 사람들이 혼란을 야기하는 광기를 피할 필요가 있다고 생각합니다. :) – bbum