2009-06-24 6 views
6

경보보기를 약간 높게 움직여서 화면에 키보드를 설치할 수도 있습니다. 프레임 변수를 합법적으로 만들기 위해 경고를 이미 표시 한 후에 경고 프레임을 잡고 Y를 변경하면됩니다. 시뮬레이터에서는 정상적으로 작동하지만 하드웨어에서이를 수행하면 경고가 올바른 위치에서 시작되지만 거의 즉시 원래의 수직 중심점으로 점프합니다. UIAlertView 위치가 유용성 지침에 따라 변경되지 않아야하는 고정 된 것입니까, 아니면 그냥 잘못하고있는 것입니까?UIAlertView를 이동할 수 있습니까?

감사합니다.

답변

22

어떤 OS를 사용 하시겠습니까? 는 x 변환의 변환 기존 및 Y 변환 :

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
         delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ]; 

alert.transform = CGAffineTransformTranslate(alert.transform, 0.0, 100.0); 

[ alert show ]; 

CGAffineTransformTranslate는 3 개의 인자를 가지는데, 나는 이것이 OS 3.0 시뮬레이터 및 OS 3.0 장치 모두에서 작동하도록 얻었다. 사용 된 예에서 경고보기는 평소보다 100 픽셀 더 높게 나타났습니다. 이것을 시도하고 무슨 일이 일어나는 지보십시오.

또한 기본적으로 전체 화면의 중심이되도록 init에 경고의 프레임을 설정하기 때문에 경고를 표시하기 전에 프레임을 수정할 수 있습니다.

+0

변형이 트릭을했기 때문에 프레임 좌표를 사용하여 이동하는 것이 문제였습니다. – Skyler

+0

그것은 3.0에서 나에게도 도움이되었지만, 어떤 이유로 iOS 4.0에서는 작동하지 않는다. –

1

경고는 modal이 아닙니다. 즉, 일반적으로 경고가 활성화되어있는 동안 다른 사용자 입력을 수행하지 않습니까? 이 경우 키보드의 가시성이 필요한 이유는 무엇입니까?

+3

경고보기의 하위보기로 추가 된 텍스트 필드가있는 경우 앱을 다운로드하기 전에 iTunes 비밀번호를 묻는 메시지가 나타나면 앱 스토어처럼 키보드를보고 싶을 것입니다. – LucasTizma

+0

코멘트 주셔서 감사합니다 - 나는 그 시나리오를 생각하지 못했습니다. – teabot

2

UIAlertViews를 따라 움직이는 iOS4가 까다로워집니다. UIAlertView에 UITextField 서브 뷰를 추가하면 iOS4에서 경고가 이동하여 키보드가 겹치지 않게됩니다. 이것은 발생하지 않습니다 < iOS4.

또한 show가 호출 된 후에도 경고 프레임이 초기화되지 않으므로 상대 CGAffineTransformation을 수행하는 프로그래밍 방식이 쉽지 않은 것으로 나타났습니다. 유일한 해결책은 OS 버전을 기반으로 조건부 변환을 수행하는 것입니다.

내게 이것은 언제든지 변경 될 수있는 UIAlertViews의 문서화되지 않은 동작을 스레딩하는 것처럼 보입니다. 필자는 애플이 텍스트와 버튼 이외에는 경고를 사용하지 않기를 바란다고 생각한다.

나는이 유형의 시나리오에 대해 내 자신의 맞춤 알림을 작성하기 시작합니다.

관련 문제