1

我正在創建自定義鍵盤,我不想支持橫向模式。因此,如果用戶將設備旋轉到橫向模式,則鍵盤仍然處於縱向模式。我曾嘗試以下方法:禁用自定義鍵盤在ios中的旋轉

-(BOOL)shouldAutorotate { 
    return NO; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationPortrait; 
} 

- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

-(void)viewDidLoad{ 
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPotrait]; 
[[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 
} 

但沒有方法的工作原理。唯一的方法在旋轉設備時觸發:

-(void)viewWillTransitionToSize:(CGSize)size 
     withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 

這裏我在旋轉後得到當前視圖大小。但是,我該如何停止輪換?任何幫助將不勝感激。

+0

相同難道這是你在找什麼:http://stackoverflow.com/questions/6941849/disable-orientation-for-keyboard-in-iphone – Ariel

+0

@Ariel:我已經試過了。不工作。 – Poles

+0

我也在製作自定義鍵盤,並使用自動佈局來維護縱向和橫向模式。我和你的情況一樣。 您現在使用自動佈局還是禁用自動佈局? – Ariel

回答

1

如果要創建一個自定義鍵盤爲您的應用程序本身,那麼它應該是可控的。

理想情況下,定向從最後heirarchial或該應用的當前可見視圖控制器繼承。

但是,如果你正在創建一個第三方鍵盤應用程序,然後自定義鍵盤是覆蓋在其他應用程序類應用與在那裏爲導向還是從應用程序,它是在keywindow目前繼承。我認爲自定義鍵盤不能侷限於特定的方向,以便用戶在使用該自定義鍵盤使用所有應用程序時感到方便。

0

能否請您嘗試viewDidAppear

-(void)viewDidAppear:(BOOL)animated{ 
    NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPotrait]; 
[[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 
} 
+0

我曾嘗試過,但它不適用於自定義鍵盤視圖控制器 – Poles