2011-04-06 9 views
0

안녕하세요, 미안 해요.이 경우 초보자라면 둘러 보았지만 수행 방법을 찾지 못했습니다. 기본적으로 나는 아이폰의 가속도계를 사용하여보기를 전환하고 싶습니다. 예를 들어, 아이폰이 떨어지면, 모션은 아이폰이 떨어 졌다는 것을 사용자에게 알려주는 다른 뷰로 전환하도록 트리거합니다. 그것을하는 방법에 대한 도움을 주시면 감사하겠습니다.UIAccelerometer를 사용하여 뷰를 전환하는 중

답변

2

가속도계는 가속도계 값을 UIAccelerometerDelegate 프로토콜 대리인에게 호출하는 UIAccelerometer 클래스를 사용하여 읽을 수 있습니다. 이는 :

시간 파일 : 귀하의 m 파일에

@interface TestView: UIViewController <UIAccelerometerDelegate> { 
    UIAccelerometer *accelerometer; 
} 

@property (nonatomic, retain) UIAccelerometer *accelerometer; 

@end 

: 당신은 당신이 원하는 무엇이든 할 한계를 선택할 수 있습니다

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.accelerometer = [UIAccelerometer sharedAccelerometer]; 
    self.accelerometer.updateInterval = .1; 
    self.accelerometer.delegate = self; 
} 

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {  
    float aX = ABS(acceleration.x); 
    float aY = ABS(acceleration.y); 
    float aZ = ABS(acceleration.z); 
    if(sqrt(aX*aX+aY*aY+aZ*aZ)>THRESHOLD){ 
    //Load new view here  
    } 
} 

. 이는 가속 벡터의 길이가 특정 값을 초과 함을 의미합니다. 나는 운동이 없다면이 값은 보통 약 1이고 운동이 있으면 더 높다고 생각합니다. 이 설정을 1.5와 비슷한 것으로 설정하는 것이 좋습니다. 너는 다른 가치를 너 자신 시도 할 수있다.

희망이 도움이됩니다.

+0

감사합니다. 프로젝트가 아무런 문제없이 빌드되고 실행되지만 가속도계가 트리거되어보기를 변경하려고하면 충돌이 발생합니다. 내가받을 오류 메시지는 다음과 같습니다. *** 캐치되지 않은 예외로 인해 응용 프로그램 종료 중 'NSInternalInconsistencyException', 이유 : '전환이 이미 진행 중일 때 에서 (으)로 모달 전환을 시작하려고합니다. . ViewDidAppear/viewDidDisAppear가 현재 전환이 완료되었음을 알리기를 기다립니다. 다시 한 번 감사합니다. –

+0

새로운보기를로드하기 위해 작성한 코드가 맞는지 확실하지 않습니다. 아마도 이것이 문제입니까? 'SecondViewController * screen = [[SecondViewController alloc] initWithNibName : nil 번들 : nil]; \t \t screen.modalTransitionStyle = UIModalTransitionStyleCoverVertical; \t \t [self presentModalViewController : screen animated : YES]; \t \t [화면 해제]; ' –

+0

코드가 정상적으로 작동하는 것 같습니다. 현재 전환이 실행되는 동안 전환을 시작하려고하기 때문에 오류가 발생합니다. 아이폰을 약간 움직일 때마다 "가속도계 : didAccelerate"기능이 호출된다는 것을 잊지 마십시오. 이것에 대한 한가지 해결책은 if 문 다음에 다음 줄을 실행하는 것입니다 :'self.accelerometer.delegate = nil;'이렇게하면 나중에 함수가 호출되는 것을 막을 수 있습니다. 희망이 도움이! – Tovi7

관련 문제