-1

複数のテキストフィールドがあります。そのうちの 1 つで、UIPickerView を表示したいと考えています。私はこのようにしました:

-(void)showPicker{
    [subject becomeFirstResponder];
    actionSheet = [[UIActionSheet alloc] initWithTitle:nil 
                                                             delegate:nil
                                                    cancelButtonTitle:nil
                                               destructiveButtonTitle:nil
                                                    otherButtonTitles:nil];

    [actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];

    CGRect pickerFrame = CGRectMake(0, 40, 0, 0);

    picker = [[UIPickerView alloc] initWithFrame:pickerFrame];
    picker.showsSelectionIndicator = YES;
    picker.dataSource = self;
    picker.delegate = self;

    [actionSheet addSubview:picker];
    [picker release];

    UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems: [NSArray arrayWithObject:@"Close"]];
    closeButton.momentary = YES; 
    closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
    closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
    closeButton.tintColor = [UIColor blackColor];
    [closeButton addTarget:self action:@selector(dismissActionSheet) forControlEvents:UIControlEventValueChanged];
    [actionSheet addSubview:closeButton];
    [closeButton release];

    [actionSheet showInView:[[UIApplication sharedApplication] keyWindow]];

    [actionSheet setBounds:CGRectMake(0, 0, 320, 485)];



}

-(void)dismissActionSheet{
    [actionSheet dismissWithClickedButtonIndex:0 animated:YES];
}

閉じると、シートが閉じられますが、subjecttextField のキーボードが表示されます。

今:

subjectそのtextFieldにキーボードを表示しないようにするにはどうすればよいですか?

キーボードを辞任する場所は次のとおりです。

- (void) resignKeyboard:(id)sender{

        if ([name isFirstResponder])
            [name resignFirstResponder];
        else if ([email isFirstResponder])
            [email resignFirstResponder];
        else if ([message isFirstResponder])
            [message resignFirstResponder];
        else if ([subject isFirstResponder]) {
            [subject resignFirstResponder];
        }

}
4

3 に答える 3

0

ピッカーを表示するアクションを処理する透明なボタンを使用して解決しました。「件名」の textField が無効になりました。

于 2012-06-03T14:56:00.440 に答える
0

キーボードの飛び出しを防ぐことができます。

最初に、クラスを UITexfield のデリゲートとして設定します

 textField.delegate = self

インターフェイス宣言に次を追加します。

<UITextFieldDelegate> 

次に、textFieldShouldBeginEditing:: を実装します。

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    // Show UIPickerView

    return NO;
}
于 2012-06-03T13:48:48.907 に答える
0

UItextFieldデリゲートを使用します。そのためには、 @interface YourViewController :UIViewController を追加する必要があります

UItextField を右クリックして xib から取得した場合、そのデリゲートを fileowner に追加します

コードでこのメソッドを使用します。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
   if(textField == subject)
   {
     return NO;
   }
   return YES;
}
于 2012-06-03T13:52:12.180 に答える