0

誰かがそのテキストフィールドをクリックしたときに、テキストフィールドをピッカービューに結合しようとしましたが、デフォルトのキーボードを表示する代わりに、好みの選択肢をいくつかリストするピッカービューを表示したいと思います。

.h ファイル

#import <UIKit/UIKit.h>

@interface activate : UIViewController<UIPickerViewDataSource, UIPickerViewDelegate>

@property (weak, nonatomic) IBOutlet UIPickerView *gender;
@property (strong, nonatomic) NSArray *arrStatus;

@property (weak, nonatomic) IBOutlet UITextField *GenderTextField;

@end

.m ファイルが含まれています

@synthesize gender;
@synthesize arrStatus;
@synthesize GenderTextField;
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.GenderTextField.inputView = gender;
    arrStatus = [[NSArray alloc] initWithObjects:@"Male", @"Female", nil];
}
-(void)textFieldBeganEditing:(NSNotification *)note{
    GenderTextField = note.object; // set ivar to current first responder
    [gender setHidden:NO];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
    //One column
    return 1;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
    //set number of rows
    return arrStatus.count;
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    //set item per row
    return [arrStatus objectAtIndex:row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{

    self.GenderTextField.text=[arrStatus objectAtIndex:row];


}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.GenderTextField.inputView = self.gender;
    [gender setHidden:NO];

}

どんな助けや例も感謝します

4

3 に答える 3

1

簡単な方法の 1 つは、上に透明なボタンを追加することだと思いますUITextField。ユーザーがそのテキスト フィールドをクリックできないようにします。ユーザーがテキスト フィールドをクリックすると、ピッカーを表示できます。ユーザーがピッキングを終了した後。テキスト フィールドを更新します。

于 2012-11-18T11:45:48.117 に答える
0

UITextfieldDelegate プロトコルを実装する簡単な方法があります。という名前のメソッドがあります

- (BOOL)textFieldShouldBeginEditing:(UITextfield *)textfield

その後、このメソッドで何かを行うことができます

return NO;

キーボードが表示されなくなります

コードは次のようになります

- (BOOL)textFieldShouldBeginEditing:(UITextfield *)textfield
{
      //Do somethings....


      return NO;
}
于 2016-07-30T15:23:53.093 に答える
0

秘訣は、テキストフィールドがFirstResponderにならないようにすることです

Field をサブクラス化し、becomeFirstResponder を呼び出す super にタッチを渡す代わりに、ピッカー ビューを表示します。

于 2012-11-18T11:24:52.957 に答える