iOS 5 以降、iPad キーボードはアンドック/スプリットできます。
しかし、アプリを最初に起動したときにカスタム キーボードをドッキング解除できません。たとえば、警告ビューが表示されて閉じられた後でのみ、キーボードはドッキング解除可能になります。
次のように、Single View Application テンプレートに基づいてテスト プロジェクトを作成しました。
MyViewController.m :
#import "MyViewController.h"
#import "MyEditor.h"
@implementation MyViewController
- (void)viewDidLoad {
[super viewDidLoad];
MyEditor *editor = [[MyEditor alloc] initWithFrame:CGRectMake(0, 640, 768, 100)];
editor.backgroundColor = [UIColor cyanColor];
[self.view addSubview:editor];
}
@end
MyEditor.m :
#import "MyEditor.h"
#import "MyKeyboard.h"
@implementation MyEditor
- (CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 100);
}
- (UIView *)inputView {
return [MyKeyboard sharedKeyboard];
}
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if ([self isFirstResponder]) {
[self resignFirstResponder];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[alertView show];
}
else {
[self becomeFirstResponder];
}
}
@end
MyKeyboard.m :
#import "MyKeyboard.h"
@implementation MyKeyboard
+ (MyKeyboard *)sharedKeyboard {
static MyKeyboard *sharedKeyboard;
if (sharedKeyboard == nil) {
sharedKeyboard = [[MyKeyboard alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
}
return sharedKeyboard;
}
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[super setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
[super setBackgroundColor:[UIColor yellowColor]];
}
return self;
}
@end
テスト手順は次のとおりです。
- アプリを起動します。
- エディターをタップすると、キーボードが表示されます。
- 右下隅をドラッグしてキーボードを移動できないことを確認します。
- エディターをもう一度タップすると、キーボードが非表示になり、アラート ビューが表示されます。
- アラート ビューを閉じます。
- エディターを 3 回タップすると、キーボードが表示されます。
- キーボードの右下隅をドラッグして、キーボードを移動できることを確認します。
終わり。
起動後の最初の段階で、キーボードをドッキング解除可能にする方法を知りたいです。どんな情報でも大歓迎です!