2016-11-07 17 views
2

横向きと縦向きをサポートするアプリケーションでviewcontrollerが1つあります。キーボードがiosで間違った向きで表示される

ボタンをクリックすると、名前を入力する必要があるポップアップが表示されます。すべてがポートレートモードで動作するはずです。

enter image description here

しかし、私は、キーボードを閉じ、左のデバイスまたは右に回転して、ポップアップを開いた場合、キーボードはまだポートレートモードで開きます。

enter image description here

trueを返し

IましshouldAutorotatesupportedInterfaceOrientationsviewcontrollerAllButUpsideDownを返すので、回転が自動的に行われます。

私はthisthisオプションを試しましたが、いずれも機能しませんでした。

何をすべきか?

+0

IBを使用して作成された場合、潜在的にいくつかのスクリーンショットで向きを扱うコードを表示できますか? – IamNguele

+0

@IamNgueleできますが、コードはXamarinにあります。私は通常、ネイティブ開発者が絶対的な必要性がなければ答えると思う質問にXamarinコードを入れないでください。残念ながら、彼らは答える可能性は低くなります。 : – arsena

+1

http://stackoverflow.com/questions/40318488/uialertcontroller-addtextfield-orientation-issue-from-ios10-on-ipad#comment68002435_40318488 - これは助けになるかもしれません - コメントを読む –

答えて

0

オクラホマへのコードの下に追加してみてください、私は推測する私のせいで、それを修正しました。

キーボードとUIViewControllerはsupportedInterfaceOrientationsを別々に呼び出し、その戻り値に基づいて回転しているようです。私はそこにif-else声明を持っていて、場合によってはAllButUpsideDownを返すだけでした。キーボードがそれが返されたメソッドを返すかどうかをチェックしたときにPortraitが返され、viewcontrollerの値がAllButUpsideDownだった。これに

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() 
    { 
     if (someStatement) 
     { 
      return UIInterfaceOrientationMask.AllButUpsideDown; 
     } 
     return UIInterfaceOrientationMask.Portrait; 
    } 

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() 
    { 
     return UIInterfaceOrientationMask.AllButUpsideDown; 
    } 

そして今だけShouldAutoRotateは、それが回転起こらすべきか否かを決定する

は、だから私は、これを変更しました。これまでいくつかに

は次のようになります。

public override bool ShouldAutorotate() 
    { 
     if (someStatement) 
     { 
      return true; 
     } 
     return false; 
    } 

    public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations() 
    { 
     return UIInterfaceOrientationMask.AllButUpsideDown; 
    } 
0

あなたのViewControllerのviewDidAppear方法

- (void)viewDidAppear:(BOOL)animated 
    { 
     [super viewDidAppear:animated]; 
     [[UIDevice currentDevice] setValue:@(UIDeviceOrientationLandscapeLeft) forKey:@"orientation"]; 
     [[UIDevice currentDevice] setValue:@(self.interfaceOrientation) forKey:@"orientation"]; 

    } 
+0

残念ながら、役に立たなかった – arsena

0
私はiOSの8のサポートを落とした後、私は最近、私の見解コントローラの一部ではまったく同じ間違ったキーボードの向きを持っ

とiOSにデプロイメント・ターゲットを格上げ9.私の以前の同僚の一人が、基本SDKがiOS 9(私たちは現在10になり、11はXcode 9ベータからコーディングするとき)だったときに古い問題を解決するためにsolution hereを使用したことが分かります。その解決策(基本的にUIAlertControllerのsupportedInterfaceOrientationsをオーバーライドしてポートレートを許可する)は、アプリウィンドウと警告自体がランドスケープであっても、新しいSDK +デプロイメントターゲットをキーボードにポートレートで強制的に提示します。

このオーバーライドを削除すると問題が解決し、アラートオーバーアラートに関する問題は発生しません。

関連する問題