在这里,我在 UIButton 上使用过(因为它已经在我的一个应用程序中使用过,我不需要再次编写整个代码)
[cropRectangleButton addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
cropRectangleButton
是一个UIButton,方法imageMoved:withEvent:
如下
- (IBAction) imageMoved:(id)sender withEvent:(UIEvent *)event
{
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
CGPoint prev = lastTouchDownPoint;
lastTouchDownPoint = point;
CGFloat diffX = point.x - prev.x;
CGFloat diffY = point.y - prev.y;
UIControl *button = sender;
CGRect newFrame = button.frame;
newFrame.origin.x += diffX;
newFrame.origin.y += diffY;
scrollView.contentSize = CGSizeMake(2*scrollView.frame.size.width, scrollView.frame.size.height);
[scrollView scrollRectToVisible:newFrame animated:YES];
button.frame = newFrame;
}
在这里,我更改了 scrollView 的 contentSize,因为测试 scrollView 是否正在滚动非常狭窄,您不需要那行代码。
当我向左拖动按钮时,scrollView 也会自动滚动到按钮框架以显示整个按钮尝试使用 UIView 实现这一点,如果不可能,只需在您的视图上放置一个透明的 UIButton 完全覆盖视图,然后您就可以执行拖 :)