gpt4 book ai didi

iphone - 单击UITextField时显示UIPickerView

转载 作者:行者123 更新时间:2023-12-01 17:56:00 25 4
gpt4 key购买 nike

我的屏幕上有许多文本字段。对于一个特定的文本字段,我需要它显示一个选择器,用户可以从该选择器中选择状态名称,一旦用户通过单击状态名称选择了一个状态,则该选择器应消失。

我不太确定该怎么做,我已经制作了看起来像这样的Nib文件。

这是我的头文件:

#import <UIKit/UIKit.h>
#import "APIHelper.h"

@interface AddNewAddressViewController : UIViewController <UIPickerViewDelegate,
UIPickerViewDataSource, UITextFieldDelegate>
{
APIHelper *myAPIHelper;
NSMutableData *responseData;
NSURLConnection *theConnection;

UIPickerView *picker;
NSArray *stateNames;

@public IBOutlet UIImageView *imageNewAddressBox;
@public IBOutlet UIImageView *imageNewAddressBox1;
@public IBOutlet UIImageView *imageNewAddressBox2;
@public IBOutlet UIImageView *imageNewAddressBox3;

@public IBOutlet UILabel *labelNewAddress;
@public IBOutlet UILabel *labelStreetAddress;
@public IBOutlet UILabel *labelStreetAddressTwo;
@public IBOutlet UILabel *labelZipCode;
@public IBOutlet UILabel *labelState;
@public IBOutlet UILabel *labelCity;
@public IBOutlet UILabel *labelPhoneNumber;

@public IBOutlet UITextField *textFieldFullName;
@public IBOutlet UITextField *textFieldStreetAddress;
@public IBOutlet UITextField *textFieldPhoneNumber;
@public IBOutlet UITextField *textFieldStreetAddressTwo;
@public IBOutlet UITextField *textFieldCity;
@public IBOutlet UITextField *textFieldState;
@public IBOutlet UITextField *textFieldZipCode;

@public IBOutlet UIButton *buttonNext;
}

@property (nonatomic, strong) IBOutlet UIPickerView *picker;
@property (nonatomic, strong) NSArray *stateNames;

@property (nonatomic, strong) IBOutlet UIImageView *imageNewAddressBox;
@property (nonatomic, strong) IBOutlet UIImageView *imageNewAddressBox1;
@property (nonatomic, strong) IBOutlet UIImageView *imageNewAddressBox2;
@property (nonatomic, strong) IBOutlet UIImageView *imageNewAddressBox3;

@property (nonatomic, strong) IBOutlet UILabel *labelNewAddress;
@property (nonatomic, strong) IBOutlet UILabel *labelStreetAddress;
@property (nonatomic, strong) IBOutlet UILabel *labelStreetAddressTwo;
@property (nonatomic, strong) IBOutlet UILabel *labelZipCode;
@property (nonatomic, strong) IBOutlet UILabel *labelState;
@property (nonatomic, strong) IBOutlet UILabel *labelCity;
@property (nonatomic, strong) IBOutlet UILabel *labelPhoneNumber;

@property (nonatomic, strong) IBOutlet UITextField *textFieldFullName;
@property (nonatomic, strong) IBOutlet UITextField *textFieldStreetAddress;
@property (nonatomic, strong) IBOutlet UITextField *textFieldPhoneNumber;
@property (nonatomic, strong) IBOutlet UITextField *textFieldStreetAddressTwo;
@property (nonatomic, strong) IBOutlet UITextField *textFieldCity;
@property (nonatomic, strong) IBOutlet UITextField *textFieldState;
@property (nonatomic, strong) IBOutlet UITextField *textFieldZipCode;

@property (nonatomic, strong) IBOutlet UIButton *buttonNext;

-(IBAction)addressTextFieldShouldReturn:(id)sender;
-(IBAction)nextPressed;

@end

这是我的.M文件:
#import "AddNewAddressViewController.h"

@implementation AddNewAddressViewController

@synthesize imageNewAddressBox;
@synthesize imageNewAddressBox1;
@synthesize imageNewAddressBox2;
@synthesize imageNewAddressBox3;
@synthesize labelNewAddress;
@synthesize labelStreetAddress;
@synthesize labelStreetAddressTwo;
@synthesize labelZipCode;
@synthesize labelState;
@synthesize labelCity;
@synthesize labelPhoneNumber;
@synthesize textFieldFullName;
@synthesize textFieldStreetAddress;
@synthesize textFieldPhoneNumber;
@synthesize textFieldStreetAddressTwo;
@synthesize textFieldCity;
@synthesize textFieldState;
@synthesize textFieldZipCode;
@synthesize buttonNext;
@synthesize stateNames;
@synthesize picker;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}

- (void)viewDidLoad
{
self.stateNames = [[NSArray alloc] initWithObjects:@"Alabama", @"Alaska", @"Arizona", @"Arkansas", @"California", @"Colorado", @"Connecticut", @"Delaware", @"District of Columbia", @"Florida", @"Georgia", @"Guam", @"Hawaii", @"Idaho", @"Illinois", @"Indiana", @"Iowa", @"Kansas", @"Kentucky", @"Louisiana", @"Maine", @"Maryland", @"Massachusetts", @"Michigan", @"Minnesota", @"Mississippi", @"Missouri", @"Montana", @"Nebraska", @"Nevada", @"New Hampshire", @"New Jersey", @"New Mexico", @"New York", @"North Carolina", @"North Dakota", @"Ohio", @"Oklahoma", @"Oregon", @"Pennsylvania", @"Puerto Rico", @"Rhode Island", @"South Carolina", @"South Dakota", @"Tennessee", @"Texas", @"Utah", @"Vermont", @"Virginia", @"Virgin Islands", @"Washington", @"West Virginia", @"Wisconsin", @"Wyoming", nil];

[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

// clicking outside the textfields removes keyboard
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(addressTextFieldShouldReturn:)];
[self.view addGestureRecognizer:tap];
}

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self setTitle: @"Update Address Book"];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (void)viewDidUnload {
[super viewDidUnload];
}

-(IBAction)addressTextFieldShouldReturn:(id)sender
{
[textFieldFullName resignFirstResponder];
[textFieldStreetAddress resignFirstResponder];
[textFieldStreetAddressTwo resignFirstResponder];
[textFieldPhoneNumber resignFirstResponder];
[textFieldState resignFirstResponder];
[textFieldCity resignFirstResponder];
[textFieldZipCode resignFirstResponder];
[sender resignFirstResponder];
}

#pragma mark -
#pragma mark PickerView DataSource

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [stateNames count];
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent: (NSInteger)component
{
return [stateNames objectAtIndex:row];
}
@end

因此,我要做的就是,当用户单击textFieldState时,从底部弹出一个带有所有状态名称的选择器,然后用户单击状态名称,该名称就会出现在textFieldState中。

任何帮助将不胜感激。谢谢。

最佳答案

您可以使用TextFielđelegate,是可行的

#pragma  mark- text delegate
-(void)textFieldDidBeginEditing:(UITextField *)textField{
if (textField==txtMonth) {
[txtMonth resignFirstResponder];
if (monthClick==0) {
monthPicker.hidden=NO;
monthPicker = [[AFPickerView alloc] initWithFrame:CGRectMake(98.0, 123.0, 126.0, 197.0)];
monthPicker.dataSource = self;
monthPicker.delegate = self;
[monthPicker reloadData];
if ([txtMonth.text isEqualToString:@""]) {

txtMonth.text=[NSString stringWithFormat:@"%i",1];
}
[self.view addSubview:monthPicker];
monthClick=1;
}


}

}

关于iphone - 单击UITextField时显示UIPickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17561283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com