UipanGesture 不适用于 Uiswitch
Posted
技术标签:
【中文标题】UipanGesture 不适用于 Uiswitch【英文标题】:UipanGesture is not working on Uiswitch 【发布时间】:2012-08-15 10:02:37 【问题描述】:我添加了一个 uiswitch,并希望通过手势将其移动到另一个位置。但 uipangesture 不适用于 uiswitch .. 下面是我的代码
UISwitch *swich = [[UISwitch alloc]initWithFrame:CGRectMake(20, 20, 40, 50)];
swich.userInteractionEnabled = YES;
UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc]
initWithTarget:self
action:@selector(switchdraged:)];
[swich addGestureRecognizer:gesture];
[self.view addSubview:swich];
函数 switchdraged 没有被调用..
下面是切换拖拽功能
- (void)switchdraged:(UIPanGestureRecognizer *) gesture1
UISwitch *swich = (UISwitch *)gesture1.view;
CGPoint translation = [gesture1 translationInView:swich];
swich.center = CGPointMake(swich.center.x + translation.x,
swich.center.y + translation.y);
// reset translation
[gesture1 setTranslation:CGPointZero inView:swich];
【问题讨论】:
能看到labelDragged: 的定义吗? 我已经添加了定义,请检查 我个人从来没有用过这个..但是你可以看这里..***.com/a/6687064/919545希望这会有所帮助 【参考方案1】:我认为UIPanGestureRecognizer
不适用于UISwitch
。
类参考说
UIPanGestureRecognizer 是 UIGestureRecognizer 的具体子类 寻找平移(拖动)手势。用户必须按 当他们平移视图时,一根或多根手指在视图上。
所以 UISwitch 可能被覆盖以更改状态
我已经创建了一个示例应用程序
同样的代码在 UILabel
而不是 UISwitch
上运行良好。我已经和阿比森讨论过了。他告诉我它可能被覆盖以改变状态。
请详细描述你需要用 UISwitch 做什么。
这个方法可以帮到你
1.在视图内创建开关并添加为子视图
- (void)viewDidLoad
UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
containerView.backgroundColor = [UIColor blackColor];
UIPanGestureRecognizer *gesture = [[UIPanGestureRecognizer alloc]
initWithTarget:self
action:@selector(switchdraged:)];
[containerView addGestureRecognizer:gesture];
UISwitch *swich = [[UISwitch alloc]initWithFrame:CGRectMake(20, 20, 40, 50)];
swich.userInteractionEnabled = YES;
[containerView addSubview:swich];
[self.view addSubview:containerView];
[self.view bringSubviewToFront:containerView];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
- (void)switchdraged:(UIPanGestureRecognizer *) gesture1
NSLog(@"triggered");
UIView *swich = (UIView *)gesture1.view;
CGPoint translation = [gesture1 translationInView:swich];
swich.center = CGPointMake(swich.center.x + translation.x,
swich.center.y + translation.y);
// reset translation
[gesture1 setTranslation:CGPointZero inView:swich];
或
此链接可能对您有所帮助
Draggable Buttons and Labels
【讨论】:
如果是这种情况,那么将开关放在 UIView 中并将 UIPanGesture 添加到它应该可以工作.. @AnkitSrivastava:我也添加了.. :) 嗨 ramshad 你能解决我的这个问题吗?我将非常感激***.com/questions/11975022/… 是的..我要发布答案..在此之前,如果我的解决方案有效,您可以通过勾选勾选符号来接受我的答案(显示我的答案的左上角或上方-投票)以上是关于UipanGesture 不适用于 Uiswitch的主要内容,如果未能解决你的问题,请参考以下文章
忽略 UIViewController 中的 UIPanGesture