1

ここで馬鹿げた質問をしてすみません。

実際には、次のボタンをクリックして次のテキストフィールドに移動するテキストフィールドのリストがあります。正常に動作していますが、そのテキストフィールドでは日付フィールド用であり、そのために日付ピッカーを入力アクセサーとして使用しています。

そのテキストフィールドを直接クリックすると、正常に機能し、日付ピッカーが表示されます。しかし、次のボタンのキーボードでそのテキストフィールドに来ると、テキストフィールドが非表示になります。

日付ピッカーの表示には、textFieldDidBegin メソッドを使用しています。[textfield rejectFirstResponder]; を使用してみました。[datePicker becomeFirstResponder]; しかし、何もうまくいきません。

どんな助けでも大歓迎です。

ありがとう。

4

5 に答える 5

1

textField.inputView日付ピッカーを表示するには、プロパティを使用する必要があります。この場合のみ[textfield resignFirstResponder];正常に動作します。

- (void)viewDidLoad {
  ...
  // Assume that self.datePicker contains configured date picker view
  // With added target on UIControlEventValueChanged action
  textField.inputView = self.datePicker;
  ...
}

PS becomeFirstResponder にはテキスト フィールド ビューのみを送信し、日付ピッカーは送信しないでください。日付ピッカーは単なる入力ビューです。

于 2013-03-07T10:15:52.717 に答える
1

私も数日前に同じ問題に直面しました。このシナリオの次のコードを記述します。最初にユーザーインタラクションを無効にdataTextfieldしますが、完全に触れていUITableCellます。そしてUITouch、textbegin デリゲート メソッドの代わりに単純なイベント メソッドをオーバーライドします。次のコードを参照してください。

tableviewController.h ファイル内

 #import <UIKit/UIKit.h>
 #import "CustomTableCell.h"
@class CustomTableCell;
@interface PersonalInfoTableViewController : UITableViewController<CustomTableCellDelegate>{
@property(nonatomic, strong) UITextField *previousTextField;
@end

In tableviewController.m file 

 @implementation TableViewController
 @synthesize previousTextField;
//When you create custom table cell set your CustomcellDelegate = self in tableView:cellForRowAtIndexPath method\
 //also assign previousTextField to CustomTableCell textfield

-(void)tableViewTouch{
[previousTextField resignFirstResponder];
}

 in CustomTableCell.h file
#import <UIKit/UIKit.h>
 @protocol CustomTableCellDelegate
 @optional
   -(void)tableViewTouch;
 @end
@interface CustomTableCell : UITableViewCell<UITextFieldDelegate>

@property(nonatomic, unsafe_unretained) id<CustomTableCellDelegate> delegate;
@property(nonatomic, weak) IBOutlet UITextFiled *theCellTextField;
@end

in CustomTableCell.m file
@synthesize theCellTextField, delegate;
  -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
 //Here my other method to show datepicker in popupViewController on tablecell.
  [delegate tableViewTouch];
  }

これはARC専用のコードです

于 2013-03-07T10:25:38.153 に答える
0

タグ 102UITextFieldで datePicker コンテナのテキストフィールドにそれぞれのタグを付けます

-(void)textFieldDidBeginEditing:(UITextField *)sender
{

    if ([sender tag]==102)
    {
        [self.textFieldDatePiker resignFirstResponder];
        [self.alaramTime resignFirstResponder];
         .
         .
         . 
         //Write all textField with resignFirstResponder

        [self showPickerView];
    }

}
于 2013-03-07T10:38:12.583 に答える
0

タグ値を textField に指定してから

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    if (textField.tag==6) {

        [textField resignFirstResponder];

        //Show your picker
    }
}
于 2013-03-07T10:35:30.180 に答える
-1

UITextFieldtextFieldDidBeginメソッドは、 になったcalledときに取得します。textFieldfirst responder

に使用textFieldShouldBeginEditingnot allow textfield editingます。どこでもu set tagtextfieldneed date picker

 - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
 {
     if([textfield tag] == some tag no)
        [self.view endEditing:YES]; // in case if any textfiled is first responder before  date picker to open
        [datePicker becomeFirstResponder]; //open date picker
        return NO; // not edit textfield
     else 
        return YES; // edit textfield here for other case
 }
于 2013-03-07T11:02:02.933 に答える