3

これは私のコードです....

`

- ( void ) registerForKeyboardNotifications {
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];
}

    // Called when the UIKeyboardDidShowNotification is sent.
- ( void ) keyboardWasShown:(NSNotification*)notification {
    [self addButtonToKeyboard];
}

#pragma -
#pragma Numeric keyboard done button

- ( void ) keyboardDoneClicked:(id)sender {
    [txtvannum resignFirstResponder];
    [txtmobnum resignFirstResponder];
//    [sender resignFirstResponder];
}


- ( void ) addButtonToKeyboard {
        // create custom button
//    if(keyButton){
    doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    doneButton.frame = CGRectMake(0, 163, 106, 53);
    doneButton.adjustsImageWhenHighlighted = NO;
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.0) {
        [doneButton setImage:[UIImage imageNamed:@"DoneUp3.png"] forState:UIControlStateNormal];
        [doneButton setImage:[UIImage imageNamed:@"DoneDown3.png"] forState:UIControlStateHighlighted];
    } else {        
        [doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
        [doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
    }
    [doneButton addTarget:self action:@selector(keyboardDoneClicked:) forControlEvents:UIControlEventTouchUpInside];
        // locate keyboard view
    UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    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];
            }
        }

//    }
////    else{
////        return;}

}

`

ユーザーが詳細を入力するためのアプリを開発しました。その中には 4 つのテキスト フィールドがあります。そのうちの 2 つは数値型のキーボードが必要です。その数値キーボードには、編集が終了した後に辞任するための完了ボタンを追加しました。しかし、その完了ボタンは他のすべてのタイプのキーボードにも対応しています。他のすべてのタイプで非表示になるように、そのボタンのみを数値キーボードに追加するにはどうすればよいですか。私はこれに苦労しています。助けてください。

ありがとうございました。

4

2 に答える 2

0

まず、キーボードのアクティビティを追跡し続けるために通知を設定する必要があります。どの UITextField がアクティブであるかを識別するには、それぞれに一意のタグを設定する必要があります。

.h ファイル内 >>

@interface myViewController : UIViewController
{
    UITextField *txtField1; // 数値入力を許可
    UITextField *txtField2; // 文字列入力を許可
    UITextField *txtField3; // 数値入力を許可
    UITextField *txtField4; // 文字列入力を許可
    UITextField *txtFieldTemp; // 一時テキストフィールド

    BOOL が返されます。
}

.m ファイル内 >>

- (void)viewDidLoad
{
    txtField1.tag = 0;
    txtField2.tag = 1;
    txtField3.tag = 2;
    txtField4.tag = 3;
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(UIKeyboardWillChangeFrameNotification:) name:UIKeyboardDidShowNotification object:nil];
}

- (void)UIKeyboardWillChangeFrameNotification:(NSNotification *)注意
{
    if (txtFieldTemp.tag == 0 || txtFieldTemp.tag == 2)
    {
        [self addButtonToKeyboard];
    }
}

-(void) textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField.tag == 0 || textField.tag == 2)
    {
        [self addButtonToKeyboard];
    }
    そうしないと
    {
        [self removeButtonFromKeyboard];
    }
    txtFieldTemp = テキストフィールド;
}
- (void)removeButtonFromKeyboard
{
   // キーボード ロジックを削除します
}
于 2012-10-19T09:16:59.080 に答える
0

値を取得できるUITextField関数を使用するたびに、setReturnKeyType:

typedef enum {
   UIReturnKeyDefault,
   UIReturnKeyGo,
   UIReturnKeyGoogle,
   UIReturnKeyJoin,
   UIReturnKeyNext,
   UIReturnKeyRoute,
   UIReturnKeySearch,
   UIReturnKeySend,
   UIReturnKeyYahoo,
   UIReturnKeyDone,
   UIReturnKeyEmergencyCall,
} UIReturnKeyType;

また、各テキスト フィールドのキー タイプを個別に設定する必要があります。完了ボタンが必要ないテキスト フィールドについては、 として設定するだけUIReturnKeyDefaultです。お役に立てれば。

于 2012-10-19T07:58:39.663 に答える