1

テキストフィールドを使用してモバイル数字を入力しています。キーボードを非表示にするための完了ボタンを追加したいと思います。以下は私のコードです

    - (void)keyboardWillShow:(NSNotification *)note {  
        // create custom button
        UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
        doneButton.frame = CGRectMake(0, 163, 106, 53);
        doneButton.adjustsImageWhenHighlighted = NO;
        [doneButton setImage:[UIImage imageNamed:@"doneup.png"] forState:UIControlStateNormal];
        [doneButton setImage:[UIImage imageNamed:@"donedown.png"] forState:UIControlStateHighlighted];
        [doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];

        // locate keyboard view
       UIWindow* tempWindow = [[[UIApplication sharedApplication] windows]objectAtIndex:1];
    UIView* keyboard;
    for(int i=0; i<[tempWindow.subviews count]; i++) {
        keyboard = [tempWindow.subviews objectAtIndex:i];
        // keyboard found, add the button
        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) {
            if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)
                [keyboard addSubview:doneButton];
        } else {
            if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
                [keyboard addSubview:doneButton];
        }
   }
}

しかし、完了ボタンを追加できません。ブレークポイントとのクロスチェックの後、制御が条件に入っていないことが if([[keyboard description] hasPrefix:@"UIKeyboard"] == YES)わかります。私はIOS5を使用しています。

4

1 に答える 1

2

プロジェクトの1つにもカスタムの完了ボタンを追加しました。私が使用したチュートリアルでは、そのコードについて言及しました。

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2)
{
    if([[tmpKeyboard description] hasPrefix:@"<UIPeripheralHost"] == TRUE)
        [tmpKeyboard addSubview:doneButton];
}
else
{
    if([[tmpKeyboard description] hasPrefix:@"<UIKeyboard"] == TRUE)
        [tmpKeyboard addSubview:doneButton];
}

iOSバージョン3.2より前は、UIKeyboardを使用したアプローチは問題ありませんが、後でUIPeripheralHostに変更する必要があります。

于 2012-05-22T12:02:33.293 に答える