4

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

テスト手順は次のとおりです。

  1. アプリを起動します。
  2. エディターをタップすると、キーボードが表示されます。
  3. 右下隅をドラッグしてキーボードを移動できないことを確認します。
  4. エディターをもう一度タップすると、キーボードが非表示になり、アラート ビューが表示されます。
  5. アラート ビューを閉じます。
  6. エディターを 3 回タップすると、キーボードが表示されます。
  7. キーボードの右下隅をドラッグして、キーボードを移動できることを確認します。

終わり。

起動後の最初の段階で、キーボードをドッキング解除可能にする方法を知りたいです。どんな情報でも大歓迎です!

4

0 に答える 0