• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 拖放而不删除 UIBUTTON

[复制链接]
菜鸟教程小白 发表于 2022-12-12 10:56:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap