我有一个附加屏幕截图中描述的要求。单击蓝色添加按钮时,UItextfield
必须在最后一个文本字段和 textview 之间再插入一个,并且必须在动态插入的新 uitextfield 旁边出现蓝色添加按钮。任何人都可以建议如何实现这一目标。我已将所有字段放在UIScrollview
.
滚动视图未启用:
我有一个附加屏幕截图中描述的要求。单击蓝色添加按钮时,UItextfield
必须在最后一个文本字段和 textview 之间再插入一个,并且必须在动态插入的新 uitextfield 旁边出现蓝色添加按钮。任何人都可以建议如何实现这一目标。我已将所有字段放在UIScrollview
.
滚动视图未启用:
你可以这样做:
在 .h 中,我有一个名为的插座previousTextField
,它连接到第一个插座。顾名思义,它将存储最新添加的文本字段。
在这里找到正在运行的项目。
-(IBAction)addTextField:(id)sender{
float x=previousTextField.frame.origin.x;
float y=previousTextField.frame.origin.y+50;//get y from previous textField and add 10 or so in it.
float w=previousTextField.frame.size.width;
float h=previousTextField.frame.size.height;
CGRect frame=CGRectMake(x,y,w,h);
UITextField *textField=[[UITextField alloc] initWithFrame:frame];
textField.placeholder = @"Enter User Name or Email";
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:15];
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.keyboardType = UIKeyboardTypeDefault;
textField.returnKeyType = UIReturnKeyDone;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;
[self.view addSubview:textField];
previousTextField=textField;
}
只是一个想法/算法如何使用,而不是编译器检查
我错过了事情,改变了+按钮的位置。我认为你可以做到:)
编辑:在上述方法中添加以下内容
//move addbutton which is an outlet to the button
CGRect frameButton=CGRectMake(addButton.frame.origin.x, addButton.frame.origin.y+50, addButton.frame.size.width, addButton.frame.size.height);
[addButton removeFromSuperview];
[addButton setFrame:frameButton];
[self.view addSubview:addButton];
在添加按钮上,在子视图中添加一个 textfeild 并给 textfeild 一个唯一的标签,这样它可以帮助您区分所有 textfeilds。对于设置框架,请参考您最后一个 textfeild 框架并相应地设置 y 坐标。
UITextField *textField = [[UITextField alloc] initWithFrame:yourFrame];
textField.delegate = self;
textField.tag=yourtag;
[scrollview addSubview:textField];
[textField release];//if arc is disable
首先获取 UItextField 的框架。现在增加前一个 textFeild 的 yPos 和 UITetField 的新位置。并重新安排低于该 textField 的 UITextField 只需增加每个 TextField 的 yPos 。
希望这会帮助你。
祝一切顺利!!!
查看我的代码的输出..
您可以使用以下代码...我已经完成了它并且它正在按照您的屏幕截图运行..在您的 .h 文件中只需声明此变量
int newY,newY1;
UIButton *btn;
然后在 viewDidLoad 方法中的 .m 文件添加以下代码
UITextField *txt=[[UITextField alloc]init];
txt.frame=CGRectMake(50,30,140,30);
txt.placeholder = @"Enter User Name or Email";
txt.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:txt];
newY=txt.frame.origin.y;
btn=[UIButton buttonWithType:UIButtonTypeContactAdd];
btn.frame=CGRectMake(250,30, 30, 30);
[btn addTarget:self action:@selector(addtxtField) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
& 然后创建一个 addtxtField 方法..见下文
-(void)addtxtField
{
newY=newY+50;
UITextField *nwtxt=[[UITextField alloc]init];
nwtxt.frame=CGRectMake(50,newY,140,30);
nwtxt.placeholder = @"Enter User Name or Email";
nwtxt.borderStyle = UITextBorderStyleRoundedRect;
[self.view addSubview:nwtxt];
btn.frame=CGRectMake(250,newY, 30, 30);
[self.view addSubview:btn];
}
它根据您的要求 100% 运行...
试试这个 ::
在 .h 文件中
@property(nonatomic, retain) IBOutlet UIScrollView *scr;
@property(nonatomic, retain) IBOutlet UITextField *txt;
@property(nonatomic, retain) IBOutlet UITextView *txtVw;
@property(nonatomic, retain) IBOutlet UIButton *btn;
-(IBAction)click:(id)sender;
在 .m 文件中
int cnt;
float x = 0.0, y = 0.0, w = 0.0, h = 0.0;
- (void)viewDidLoad
{
[super viewDidLoad];
scr.delegate = self;
scr.contentSize = CGSizeMake(0, 400);
cnt = 0;
}
-(IBAction)click:(id)sender
{
if (cnt == 0) {
x=txt.frame.origin.x;
y=txt.frame.origin.y + 50;//get y from previous textField and add 10 or so in it.
w=txt.frame.size.width;
h=txt.frame.size.height;
}
else
{
y+=50;
}
UITextField *textField=[[UITextField alloc] initWithFrame:CGRectMake(x, y, w, h)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.placeholder = @"Enter User Name or Email";
[scr addSubview:textField];
[btn setFrame:CGRectMake(248, y, 30, 30)];
float y1 = y + 100;
[txtVw setFrame:CGRectMake(orign_x, y1, origin_w, origin_h)];
cnt++;
}
希望,它肯定会帮助你。
谢谢。