矩形将被视为两个点,第一个点将是touchBegan点,而touchMove将是第二个点,矩形将根据用户手指动态绘制,(就像当您点击一次点击桌面时并移动鼠标,你会得到动态矩形)。
由于
答案 0 :(得分:3)
UIView
的子类,例如DrawingView
在DrawingView
中,您应该实现以下方法:
在方法中保存起点:- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
重绘此处- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
在此处隐藏(或保存)- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
在这里- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
例如,在第一种方法中,您可以通过以下方式检测起点:
CGPoint startCornerOfYourRect;
for (UITouch *touch in touches)
{
startCornerOfYourRect = [touch locationInView:self];
break;
}
答案 1 :(得分:2)
好的,您可以在touchesMoved
中绘制矩形(使用@Nekto touchesBegan
来存储矩形的起点)。
假设您在我们正在绘制的UIView上保留一个引用并将其称为drawnView
。
在touchesBegan
中,我们为drawnView
以下是touchesMoved
:
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent*)event
{
// We only take care of a single touch
if ([touches count] == 1)
{
UITouch *touch = [touches anyObject];
// Find the width and height of the rect
CGRect drawnFrame = drawnView.frame
drawnFrame.size.width = [touch locationInView:parentView].x - drawnFrame.origin.x
drawnFrame.size.height = [touch locationInView:parentView].y - drawnFrame.origin.y
[drawnView setFrame:drawnFrame];
}
}
不要复制粘贴代码,我没有用Xcode或其他东西写。它可能有错误(当然)。但我希望它可以帮助您找到解决方案。小心,如果你将手指拖到顶部或左侧(高度和宽度的负值),我不知道它会如何表现。