UIAccelerometerDelegate를 구현하는 클래스 (TestAccel)를 만들었습니다. 이 클래스에는 UIAccelerometer 용 private var가 있습니다.클래스가 대리자 알림을 수신하지 않음
UIAccelerometer *accel;
클래스의 초기화는 다음과 같습니다
- (id) init:(id)actOnThisInstance{
[self init];
accel = [UIAccelerometer sharedAccelerometer];
accel.delegate = actOnThisInstance;
return self;
}
호출자의 (a의 ViewController)이
accel = [[Acc alloc]init:self];
TestAccel 결코 shouldAutorotateToInterfaceOrientation의 구현에 모든 알림을 수신없는 것처럼 초기화합니다. 그런 다음 호출자에 UIAccelerometerDelegate를 구현합니다. 호출자는 알림을 받지만 TestAccel은 여전히 아무 것도받지 못합니다. 내가 뭘 잘못하고 있는거야?
저의 목표는 호출 클래스에 대한 UIAccelerometerDelegate 알림 처리에 자체적으로 포함 된 클래스를 만드는 것입니다. 호출자가 UIAccelerometerDelegate를 구현하지 못하도록하고 싶지만 가능한지 확실하지 않습니다.
+1 좋은 답변입니다. 나는 다음을 사용하는 것을 권할 것이다 :'if (! (self = [super init])) {return nil; }'단순히'[super init]'대신에. 결론은 http://www.wilshipley.com/blog/2005/07/self-stupid-init.html –
을 참조하십시오. Acc 할당은 오타였습니다. 나는 가지고있는 것을 따라 갔지만 여전히 TestAccel에서 알림을받지 못했습니다. 델리게이트를 구현했습니다 : @interface TestAccel : NSObject. 이상한 점은 뷰 컨트롤러에서 shouldAutorotateToInterfaceOrientation을 구현하면 위임을 구현하지 않지만 알림을 얻게된다는 것입니다. 어떤 아이디어? –
4thSpace
shouldAutorotateToInterfaceOrientation : 재정의 할 수있는 UIViewController 메서드입니다. UIAccelerometerDelegate와 관련이 없습니다. 가속도계 : didAccelerate :. – gerry3