2011-12-23 128 views
0

我有一個很奇怪的問題。我製作了一個UIImageView網格(目前爲16x16),每個網格上都有一個UILabel,它們只能包含一個文本字符。慢UILabel更新

我已經知道了,所以當你點擊它時,這個文本會改變,當你釋放它時會再次改變。

這些UILabel以適當的速度正確更新。

除非我還更新了我的應用的「狀態」UILabel(其中只有一個)。

這個UILabel明顯大於其他的,並且只有一個實例。它位於屏幕的頂部,其大小是屏幕的寬度,高度爲40像素。

現在,當我嘗試[標籤setText:]這個標籤,它執行得很好,並以適當的速度......如果我點擊我的一個UIImageViews靠近屏幕的頂部。但是,當我點擊屏幕底部的一個按鈕時,它會發現明顯的差異。

我已經刪除了任何通過列表檢索UIImageViews的迭代。它計算我點擊到(x,y)整數座標的位置,然後通過[[array objectAtIndex:x] objectAtIndex:y]從數組中選擇適當的UIImageView。

我已經縮小到主要「狀態」UILabel作爲導致放緩。如果我爲該標籤註釋掉[label setText:]並用NSLog打印輸出替換,則所有內容都以正確的速度運行。再次,UIImageViews以正確的速度向屏幕頂部移動。

有沒有人有任何建議?我知道我絕對沒有在這裏列出任何列表,所以我有點困惑,爲什麼這種放緩只發生在網格的底部。

感謝您的幫助!

一些代碼:

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGPoint touchPoint = [[touches anyObject] locationInView: imageView]; 
    int x = 0; 
    int y = 0; 
    x = touchPoint.x/(screenWidth/width); 
    y = (touchPoint.y - OFFSET)/(screenHeight/height); 

    if ([self outOfBoundsWithX:x Y:y]) { 

     if (!isMoving && lastBead != nil) { 
      [self releaseBead:lastBead]; 
     } 

     lastPoint = CGPointZero; 
     lastBead = nil; 
    } 
    else { 

     if (!isMoving && lastBead != nil) { 
      NSLog(@"TEST"); 
      [self releaseBead:lastBead]; 
     } 
     else { 
      Bead * b = [self getBeadAtX:x Y:y]; 
      [self releaseBead:b]; 
     } 

    } 
} 

- (void) releaseBead:(Bead*)b 
{ 
    [b setGlyph:'c']; 
    if (statusText == "Test") { 
     [self setStatus:"Woohoo!"]; 
    else { 
     [self setStatus:"Text"]; 
    } 
} 

- (void) setStatus:(char*)status 
{ 
    label.text = [NSString stringWithCString:status encoding:NSASCIIStringEncoding]; 
    statusText = status; 
} 

回答

0

最終通過使用NSString的drawAtPoint函數解決了這個問題,該函數設法通過這個沒有滯後。

0

我不太清楚。唯一看起來像這樣的問題是:

CGPoint touchPoint = [[touches anyObject] locationInView: imageView]; 

但這並不能解釋其餘的問題。引起問題的標籤是否有可能在後臺調用某些內容?也許一步一步看看發生了什麼。

此外,這可能聽起來很奇怪,但它可能是一個模擬器問題。嘗試從模擬器中刪除應用程序,然後重新運行它。

+0

發表了一些代碼。請讓我知道你在想什麼。 Bead是我的UIImageView,標籤是主應用程序的UILabel。每個Bead包含一個包含一個字符並通過[bead setGlyph:]函數設置的小UILabel。 – pantaryl 2011-12-23 21:33:31

+0

在模擬器上,它運行良好...在設備上,但它沒有。 你爲什麼認爲touchPoint可能是問題? – pantaryl 2011-12-23 22:17:55