UITextField leftView

Joh*_*kes 8 iphone uitextfield

是否可以使用leftView设置UITextField,这样如果用户点击UITextField,键盘会显示,但如果他们点击leftView中的图标,则会调用另一个方法(即显示UIPickerview的方法)?

Jam*_*ell 20

你有没有检查过leftFieldViewMode是否设置为never

[textField setLeftViewMode:UITextFieldViewModeAlways];
Run Code Online (Sandbox Code Playgroud)


Dur*_*n.H 8

像普通人那样实例化一个按钮

 UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];

 [btn setFrame:CGRectMake(0,0,30,30)];

 [btn setTitle:@"title" forState:UIControlStateNormal];

[btn addTarget:self action:@selector(BtnClick) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

像往常一样实例化文本字段

 UITextField *txtfield1=[[UITextField alloc]initWithFrame:CGRectMake(10, 10,300,30)];

[txtfield1 setBackgroundColor:[UIColor grayColor]];

[txtfield1 setPlaceholder:@" Enter"];
Run Code Online (Sandbox Code Playgroud)

在左侧设置视图(右视图也可用)

[txtfield1 setLeftView:btn];
Run Code Online (Sandbox Code Playgroud)

如果你希望视图总是显示,那么下面的代码就可以了

[txtfield1 setLeftViewMode:UITextFieldViewModeAlways];
Run Code Online (Sandbox Code Playgroud)

如果你想让视图永远显示

[txtfield1 setLeftViewMode:UITextFieldViewModeNever];
Run Code Online (Sandbox Code Playgroud)

如果您希望视图显示文本字段是否未编辑,则在下面

[txtfield1 setLeftViewMode:UITextFieldViewModeUnlessEditing];
Run Code Online (Sandbox Code Playgroud)

如果你想让视图显示是否编辑了文本字段

[txtfield1 setLeftViewMode:UITextFieldViewModeWhileEditing];
Run Code Online (Sandbox Code Playgroud)

按钮单击事件并弹出

-(void)BtnClick
{
  //Usual pop over coding goes here
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*pos 2

您是否尝试过使用 UIButton 来完成此任务?来自 leftView 属性的文档:

如果您的覆盖视图不与任何其他同级视图重叠,它将像任何其他视图一样接收触摸事件。如果您为视图指定一个控件,该控件将照常跟踪和发送操作。但是,如果覆盖视图与清除按钮重叠,则清除按钮始终优先接收事件。

因此,创建一个 UIButton 实例,根据需要配置其外观和操作,然后将其设置为 leftView 属性。