我有一個很奇怪的問題。我製作了一個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;
}
發表了一些代碼。請讓我知道你在想什麼。 Bead是我的UIImageView,標籤是主應用程序的UILabel。每個Bead包含一個包含一個字符並通過[bead setGlyph:]函數設置的小UILabel。 – pantaryl 2011-12-23 21:33:31
在模擬器上,它運行良好...在設備上,但它沒有。 你爲什麼認爲touchPoint可能是問題? – pantaryl 2011-12-23 22:17:55