Fir*_*ist 40 ios8 ios-app-extension uiinputviewcontroller custom-keyboard
在自定义键盘扩展中,我们无法使用
`didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation`
Run Code Online (Sandbox Code Playgroud)
和sharedApplication.
我需要在旋转时检测键盘上的纵向或横向.
如何在Custom Keyboard扩展中检测方向更改?
Mat*_*att 41
为了当方向改变,重写来更新您的自定义键盘viewDidLayoutSubviews中UIInputViewController.据我所知,当发生旋转时,总是调用此方法.
此外,由于传统方法[UIApplication sharedApplication] statusBarOrientation]不起作用,要确定当前方向,请使用以下代码段:
if([UIScreen mainScreen].bounds.size.width < [UIScreen mainScreen].bounds.size.height){
//Keyboard is in Portrait
}
else{
//Keyboard is in Landscape
}
Run Code Online (Sandbox Code Playgroud)
希望这有帮助!
Alb*_*haw 25
不推荐使用并且适用于任何设备屏幕尺寸(包括未来的屏幕尺寸Apple将在今年发布).
在CustomKeyboard中ViewController.m:
-(void)viewDidLayoutSubviews {
NSLog(@"%@", (self.view.frame.size.width == ([[UIScreen mainScreen] bounds].size.width*([[UIScreen mainScreen] bounds].size.width<[[UIScreen mainScreen] bounds].size.height))+([[UIScreen mainScreen] bounds].size.height*([[UIScreen mainScreen] bounds].size.width>[[UIScreen mainScreen] bounds].size.height))) ? @"Portrait" : @"Landscape");
}
Run Code Online (Sandbox Code Playgroud)
完成.
或..................
有关此代码的更易于阅读的版本:
-(void)viewDidLayoutSubviews {
int appExtensionWidth = (int)round(self.view.frame.size.width);
int possibleScreenWidthValue1 = (int)round([[UIScreen mainScreen] bounds].size.width);
int possibleScreenWidthValue2 = (int)round([[UIScreen mainScreen] bounds].size.height);
int screenWidthValue;
if (possibleScreenWidthValue1 < possibleScreenWidthValue2) {
screenWidthValue = possibleScreenWidthValue1;
} else {
screenWidthValue = possibleScreenWidthValue2;
}
if (appExtensionWidth == screenWidthValue) {
NSLog(@"portrait");
} else {
NSLog(@"landscape");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22966 次 |
| 最近记录: |