OGeek|极客世界-中国程序员成长平台

标题: ios - 拖放而不删除 UIBUTTON [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 10:56
标题: ios - 拖放而不删除 UIBUTTON

问题是我必须触摸两次才能拖动按钮..当我第一次触摸时,它会自动复制按钮并触摸结束..现在我想要的是第一次触摸并拖动..

point = [[[event allTouches] anyObject] locationInView:self.view];

NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObjectid)touch];

UIButton * anotherButton =(id) [NSKeyedUnarchiver unarchiveObjectWithData:archivedData];

UIImage *senderImage=[(id)touch imageForState:UIControlStateNormal];

CGImageRef cgImage = [senderImage CGImage];

UIImage *copyOfImage = [[UIImage alloc] initWithCGImage:cgImage];

[anotherButton setImage:copyOfImage forState:UIControlStateNormal];

[anotherButton addTarget:self actionselector(wasDragged:withEventforControlEvents:UIControlEventTouchDragInside];

[self.view addSubview:anotherButton];



Best Answer-推荐答案


这应该可以解决您的问题,

1) 声明,

@property(weak, nonatomic) IBOutlet UIButton *button;
@property(strong, nonatomic) UIButton *tempButton;


2)将手势识别器添加到您的按钮,

UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self actionselector(handlePan];
[self.button addGestureRecognizer:panGesture];


3) 添加这个句柄方法,

- (void) handlePanUIPanGestureRecognizer *)recognizer {

    switch([recognizer state]){
        case  UIGestureRecognizerStatePossible : {

        }break;
        case  UIGestureRecognizerStateBegan: {
            UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            [button setFrame:self.button.frame];
            [button setTitle:self.button.titleLabel.text forState:UIControlStateNormal];
            [self.view insertSubview:button belowSubview:self.button];
            self.tempButton = button;
            NSLog(@"UIGestureRecognizerStateBegan");
        }break;
        case  UIGestureRecognizerStateChanged: {
            CGPoint translation = [recognizer translationInView:self.view];
            recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                                 recognizer.view.center.y + translation.y);
            [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
        }break;
        case  UIGestureRecognizerStateCancelled: {

        }break;
        case  UIGestureRecognizerStateFailed: {

        }break;
        case   UIGestureRecognizerStateRecognized: {
            [self.tempButton removeFromSuperview];
            self.tempButton = nil;
        }break;
    }
}

关于ios - 拖放而不删除 UIBUTTON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16523675/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4