2009-07-14 4 views
1

는 내가 세로 모드 회전에 뭔가를 장치를해야하지만 난이아이폰/아이팟에서 장치의 방향을 제어하는 ​​방법?

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    //[[[UIApplication sharedApplication]keyWindow]subviews removeFromSuperview ]; 
    // return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
    return YES; 
} 

다음 코드를 사용 할 때 시뮬레이터에서 잘 작동하지만 난 장치의 코드를 설치하는 데 사용할 때 그것은을 기기가 너무 민감하기 때문에 기기의 위치를 ​​약간 변경하면이 코드가 실행되고 휴대 전화의 회전에 표시되는 화면으로 이동합니다. pls 사용자는 기기의 민감도를 어떻게 제어 할 수 있는지 알려줍니다. 내 코드가 실행해야하는 위치에서 90 '회전을 완료했을 때와 같은 위치에서 전화를 흔들면 실행 만하면됩니다. 어떤 도움

감사

Balraj 베르

답변

1

당신은 아마 방향 정보를 버퍼링 할; 즉, 방위의 센서가 현재 표시하고있는 방위와 다른 여러 표시를받은 후에 방 향을 변경하십시오.

0

작성한 내용을 잘 이해 한 상태에서 장치를 돌릴 때 응용 프로그램이 너무 민감합니까? 이것이 왜 있는지 이해하기 어렵습니다. 포함 된 코드는 애플리케이션이 모든 로테이션을 허용 하겠지만, 로테이션 이벤트를 처리하는 방법을 명시하지 않은 상태입니다. [정보를 바탕으로

, 난 단지 사용하여 장치의 방향을 당신이 (회전 이벤트가 처리됩니다 아마도) 코드에서에 검사를 추가 할 것을 제안하고 얻을 수 있습니다

[[UIDevice currentDevice] orientation]; 

하는 것 장치의 현재 방향을 나타내는 UIInterfaceOrientation 열거 형을 반환합니다.

UIDeviceOrientationPortrait 
UIDeviceOrientationPortraitUpsideDown 
UIDeviceOrientationLandscapeLeft 
UIDeviceOrientationLandscapeRight 

그런 다음 방향을 변경할 필요가 있는지 여부를 확인하는 데 사용할 수 있습니다. (참고 :.이 아이폰 OS 2.0 내가 OS 3.0 이상 등/아래로 얼굴을 거짓말 포함 가지고 있다고 생각합니다)

- (void) didRotate:(NSNotification *)notification 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

    if (orientation == UIDeviceOrientationLandscapeRight) 
    { 
     NSLog(@"Landscape Right!"); 
    } 
} 

당신이 방향이 너무 빨리 당신이 정보를 버퍼링 할 수 있습니다 스위치를 찾을 경우, 새 방향으로 전환하기 전에 비교할 수있는 여러 샘플 점을 만듭니다.

관련 문제