4
這是一個初學者的問題恐怕:可可觸摸:如何在觸摸傳遞到另一個對象
我有一個UIText覆蓋整個屏幕。我對這個的UITextView的頂部的另一個透明視圖,以便能夠識別手勢滑動(水平和垂直),像這樣:
- (void)viewDidLoad
{
[super viewDidLoad];
// UITextView
CGRect aFrame = CGRectMake(0, 0, 320, 480);
aTextView = [[UITextView alloc] initWithFrame:aFrame];
aTextView.text = @"Some sample text.";
[self.view addSubview:aTextView];
// canTouchMe
CGRect canTouchMeFrame = CGRectMake(0, 0, 320, 480);
canTouchMe = [[UIView alloc] initWithFrame:canTouchMeFrame];
[self.view addSubview:canTouchMe];
}
讓我們考慮用戶觸摸(不刷卡)的canTouchMe查看。在這種情況下,我希望canTouchMe視圖消失並傳遞到UITextView隱藏下方,以便它進入編輯模式並啓用UITextView具有的「自然」滾動選項(即僅水平)。
我倒是開始的方法是這樣的:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
UITouch *touch =[touches anyObject];
gestureStartPoint = [touch locationInView:self.view];
}
我怎麼告訴這個方法是,如果只承認ONE TOUCH,它應隱藏canTouchMeFrame和轉嫁觸摸到UITextView中?
對不起,如果這是基本的,但我不知道如何實現這一點。感謝您的任何建議。
編輯:
我介紹了一個touchEnded方法,但我仍然沒有運氣。觸摸不會被轉發到UITextView。我需要爲編輯挖掘兩次:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
[super touchesMoved:touches withEvent:event];
UITouch *touch = [touches anyObject];
CGPoint currentPosition = [touch locationInView:self.view];
CGFloat deltaX = fabsf(gestureStartPoint.x - currentPosition.x); // will always be positive
CGFloat deltaY = fabsf(gestureStartPoint.y - currentPosition.y); // will always be positive
if (deltaY == 0 && deltaX == 0) {
label.text = @"Touch"; [self performSelector:@selector(eraseText) withObject:nil afterDelay:2];
[aTextView touchesBegan:touches withEvent:event];
[self.view bringSubviewToFront:aTextView];
[self.view bringSubviewToFront:doneEdit];
}
}
非常感謝您的幫助。這工作正常 - 唯一的問題是,我的程序現在可以只檢測觸摸,而不是SWIPES了。我相應地更新了代碼(參見上文)。看起來,如果我獲得的不止一次觸摸,它不會將其識別爲這樣,而只能作爲一次觸摸。例如。如果我滑動,它只會將其識別爲一次觸摸。 – 2011-04-18 11:53:42