2012-06-25 23 views
0

在我的項目中,我們正在自定義UITextField以獲取textField右側的圖標圖像(如瀏覽器中的書籤圖標)。iPhone:切換右邊的UITextField的查看圖標圖像

的功能是, 1)中的TextField應該爲可編輯

2)最初在黑色右邊的圖標。 3)如果用戶開始點擊,圖標圖像將被改爲橙色。

4)如果用戶的版本中,圖標圖像變成了其原來的狀態(黑色)

首先2點被執行。 對於第三點,重寫UIControl :: beginTrackingWithTouch方法並將圖標顏色更改爲橙​​色。

請求您的幫助以實現最後一點。我無法獲得發佈事件以更改黑色圖像。 嘗試使用touchesEnded但是隻有當用戶從控件中釋放完成時纔會調用此方法。

任何人都可以幫助我如何識別用戶點擊何時結束。

感謝和問候。

回答

0

IIRC,用戶點擊並按住書籤圖標?如果是的話,也許你可以使用的UIButton爲:

UIImage *normalImage = [UIImage imageNamed:@"normal_image.png"]; 
UIImage *touchedImage = [UIImage imageNamed:@"touched_image.png"]; 

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.frame = CGRectMake(0, 0, 50, 50); // put your frame here 

[button setImage:normalImage forState:UIControlStateNormal]; // Normal state image 
[button setImage:touchedImage forState:UIControlStateHighlighted]; // Touched state image 
+0

請注意,我們正在自定義UITextField,而不是UIbutton – Lara

0

覆蓋下面的方法:

  • (無效)endTrackingWithTouch:(UITouch *)觸摸withEvent:方法(*的UIEvent)事件;
  • (void)cancelTrackingWithEvent:(UIEvent *)event;
+0

** endTrackingWithTouch **在任何情況下都不會調用,我不知道爲什麼?我已正確地包括代表。 ** cancelTrackingWithEvent **被調用。我已經使用過,但不用於長按。它在** beginTrackingWithTouch **調用後幾秒鐘被調用 – Lara