2010-01-04 65 views
8

是否可以使用leftView设置UITextField,以便如果用户单击到UITextField中时键盘会显示,但是如果它们在左侧视图中单击某个图标,则会调用另一个方法(即,显示UIPickerview )?UITextField leftView

回答

2

您是否尝试过使用UIButton进行此任务?从已leftView属性的文档:

如果您的覆盖视图不重叠 任何其他同胞的意见,收到 触摸事件,就像任何其他视图。如果 指定了您的视图控件, 控制轨道并像平常一样发送操作 。如果覆盖视图与清除按钮重叠,但清空 按钮始终优先于接收事件的 。

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

+0

其实这是行不通的。这里是我的: \t UIButton * detailButton = [[UIButton alloc] init]; \t [detailButton setImage:[UIImage imageNamed:@“textview-list-icon.png”] forState:UIControlStateNormal]; \t self.propertyField.leftView = detailButton; \t [detailButton release]; 代码在控制台中编译并运行时没有任何错误或警告,但不显示该按钮。我误解了这个吗? 谢谢。 – 2010-01-04 22:52:58

+0

尝试设置按钮的框架。除非你指定一个框架,否则它不会知道在哪里以及如何绘制自己,所以你不会看到它。这就是为什么你通常希望使用initWithFrame而不是init来处理UIView子类的原因,所以你不必为以后的设置感到困扰。 – 2010-01-05 08:51:42

20

你是否检查leftFieldViewMode设置为其他的东西比从未

[textField setLeftViewMode:UITextFieldViewModeAlways]; 
8

实例化一个按钮,如u做normaly

​​

实例化一个文本框,你做正常

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

[txtfield1 setBackgroundColor:[UIColor grayColor]]; 

[txtfield1 setPlaceholder:@" Enter"]; 

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

[txtfield1 setLeftView:btn]; 

如果u希望视图以显示总是那么下面的代码做它

[txtfield1 setLeftViewMode:UITextFieldViewModeAlways]; 

如果u希望视图以显示从来没有那么

[txtfield1 setLeftViewMode:UITextFieldViewModeNever]; 

如果u想要的视图来显示如果文本框未编辑,则在

以下
[txtfield1 setLeftViewMode:UITextFieldViewModeUnlessEditing]; 

如果u所需的视图显示,如果文本字段进行编辑,然后

[txtfield1 setLeftViewMode:UITextFieldViewModeWhileEditing]; 

按钮单击事件和流行过

-(void)BtnClick 
{ 
    //Usual pop over coding goes here 
}