Hola傢伙。 我遇到觸摸處理和UIResponder有點問題。更改FirstResponder
我的目標是管理單點觸摸(移動)以與不同視圖進行交互。
我向我的UIImageView添加了一個手勢識別器,它向我的customViewController發送一條簡單消息。它分配並顯示一個自定義視圖(UIButton的子類)通過點擊的UIImageView。
我將能夠(不必釋放初始手指點按)將觸摸移動發送到我新分配的自定義按鈕。
看來,我的UIImageView吞下我的觸摸,所以我的新Button不能感覺到手指的移動。 我試圖辭去急救員,但似乎沒有效果。
我的自定義按鈕工作很好,但只有當我釋放第一個水龍頭,然後再次點擊新的顯示器按鈕。
有什麼建議嗎? 預先感謝您。
一些代碼在這裏:
裏面我的viewController我連着longPressGestureRecognizer我profileImageView是繪製圍繞profileImageView一個圓形按鈕。
-(void)showMenu:(UIGestureRecognizer*)gesture {
[profileImageView removeGestureRecognizer:gesture];
[profileImageView setUserInteractionEnabled:NO];
ConcentricRadius radius;
radius.externalRadius = 75;
radius.internalRadius = 45;
GTCircularButton *circularMenu = [[[GTCircularButton alloc] initWithImage:[UIImage imageNamed:@"radio.png"] highlightedImage:[UIImage imageNamed:@"radio_selected.png"] radius:radius] autorelease];
[circularMenu setTag:kCircularTagControllerCircularMenu];
[circularMenu setCenter:[profileImageView center]];
// Buttons' frames will be set up by the circularMenu
UIButton *button1 = [[[UIButton alloc] init] autorelease];
UIButton *button2 = [[[UIButton alloc] init] autorelease];
UIButton *button3 = [[[UIButton alloc] init] autorelease];
UIButton *button4 = [[[UIButton alloc] init] autorelease];
[circularMenu setButtons:[NSArray arrayWithObjects:button1, button2, button3, button4, nil]];
//[[self view] addSubview:circularMenu];
[[self view] insertSubview:circularMenu belowSubview:profileImageView];
}
現在我使用touchMoved方法手動處理circularMenu內的touchEvent。
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CGPoint touchLocation = [(UITouch*)[touches anyObject] locationInView:self];
for (UIView *aSubview in _roundButtons) {
if ([aSubview isKindOfClass:[UIButton class]]) {
UIButton *aButton = (UIButton*)aSubview;
CGPoint buttonTouchPointConverted = [aButton convertPoint:touchLocation toView:aButton];
if (CGRectContainsPoint([[aButton layer] frame], buttonTouchPointConverted)) {
[self rotateHighlightImage:aButton];
}
}
}
}
目標始終是處理gestureRecognizer的結尾,並將觸摸事件傳遞到創建的新實例,而不必將手指從屏幕上擡起。
任何想法?
PD:我使用touchMoved手動處理觸摸,如果我使用addTarget:action:forControlEvents:在我的按鈕上(1,2,3和4)檢測touchEvent的按鈕吞下它並使其他按鈕無法感覺觸摸他們。
創建觸摸事件,並在事件隊列中插入? – onnoweb 2011-05-27 14:27:23
我該怎麼做? – Gabriele 2011-05-29 08:51:43