2010-01-04 29 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 
}