Tag: uigesturerecognizer

需要应用UIRotationGestureRecognnizer,然后是UILongPressGestureRecongnizer

在一个视图上应用UILongPressGestureRecongnizer ,请查看以下代码以供参考。 @interface ViewController () { UIRotationGestureRecognizer *rotationGestureRecognizer6; } – (void)viewDidLoad { //——–Added LongPress Gesture———-// UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; longPress.minimumPressDuration = 2.0; [view6 addGestureRecognizer:longPress]; rotationGestureRecognizer6 = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotationWithGestureRecognizer:)]; } #pragma mark – UILongPressGesture Handler Method -(void)handleLongPress:(UILongPressGestureRecognizer *)sender { if (sender.state == UIGestureRecognizerStateEnded) { NSLog(@"UIGestureRecognizerStateEnded"); } else if (sender.state == UIGestureRecognizerStateBegan){ […]

UIPanGestureRecognizer没有启动。 Swift 3

我的视图层次如下: 视图 查看用户的Img + Emoji(A) 与UI元素的视图。 (B) 在viewDidLoad中,我为emojis创buildUIImageViews,将它们添加到A并添加手势识别器(平移,缩放,旋转): let emojiView = UIImageView(image: emoji) emojiView.tag = n emojiView.frame = CGRect(x: 153, y: 299, width: 70, height: 70) emojiView.isUserInteractionEnabled = true let pan = UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(recognizer:))) pan.delegate = self emojiView.addGestureRecognizer(pan) let pinch = UIPinchGestureRecognizer(target: self, action: #selector(self.handlePinch(recognizer:))) pinch.delegate = self emojiView.addGestureRecognizer(pinch) let rotate = UIRotationGestureRecognizer(target: […]

手势识别器不叫

当用户在文本框之外轻击时,我已经设置了一个用于解除键盘的手势识别器。 DismissKeyboard函数不会被调用。 我是否设置了观察者错误还是这是一个不同的问题? 另外,这是一个正在挖掘的桌面视图。 代码摘录 class CommentsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name: UIKeyboardWillHideNotification, object: nil) } func keyboardFrameChanged(notification: NSNotification) { println("keyboardFrameChanged") let userInfo = notification.userInfo let key = UIKeyboardFrameEndUserInfoKey if let info = userInfo { let frameValue = info[key] […]

iOS / Swift:如何实现backButton的longPressed动作?

我试图为我的应用程序中的每个ViewController实现自定义后退button 。 我希望它有两个行动。 如果button被轻敲 ,它应该正常行为,并上升导航堆栈。 如果button按下的时间更长,它应该转到预定义的ViewController。 我怎么才能做到这一点,只有后退快速?

将GestureRecogniser附加到多个图像浏览

今天遇到的一些奇怪的事情,同时将同一个手势识别器连接到多个图像视图。 它只附加到最后一个,换句话说,它可以附加到只有一个视图! 我不得不创build多个手势识别器来满足我的要求。 以下是我所做的。 我正确吗? 这是将识别器附加到多个图像视图的唯一方法吗? 请注意,我不想使用UITableView或UIVIew,并把所有的图像,并附加手势识别器只有UITableView或UIVIew。 我有所有图像分散,我必须检测哪个图像被拖动。 谢谢。 [imgView1 setUserInteractionEnabled:YES]; [imgView1 setMultipleTouchEnabled:YES]; [imgView2 setUserInteractionEnabled:YES]; [imgView2 setMultipleTouchEnabled:YES]; [imgView3 setUserInteractionEnabled:YES]; [imgView3 setMultipleTouchEnabled:YES]; [imgView4 setUserInteractionEnabled:YES]; [imgView4 setMultipleTouchEnabled:YES]; [imgView5 setUserInteractionEnabled:YES]; [imgView5 setMultipleTouchEnabled:YES]; [imgView6 setUserInteractionEnabled:YES]; [imgView6 setMultipleTouchEnabled:YES]; //Attach gesture recognizer to each imagviews gestureRecognizer1 = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(gestureHandler:)]; gestureRecognizer1.delegate = self; gestureRecognizer2 = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(gestureHandler:)]; gestureRecognizer2.delegate […]

从UITapGestureRecognizer中移除目标

我已经为我的手势识别器添加了一个匿名方法的动作 UITapGestureRecognizer tapGesture = new UITapGestureRecognizer (); tapGesture.AddTarget (() => HandleTap (tapGesture)); 我怎样才能删除目标? UIGestureRecognizer.Token是必需的。

UILongPressGestureRecognizer不起作用

我想检测UILongPressGestureRecognizer的UIWebView并按住..如果我长按近3秒,那么下面的条件应该是True然后只 if (navigationType == UIWebViewNavigationTypeLinkClicked && longGesture )但它不工作….它继续在循环中每次..不检查longPressGesture时间… 即使我已经试过条件.. if (navigationType == UIWebViewNavigationTypeLinkClicked && longGesture.minimumPressDuration> 3 ) 不工作..我在犯错误的地方.. – (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] init]; longGesture.numberOfTapsRequired = 1; longGesture.numberOfTouchesRequired = 1; longGesture.minimumPressDuration = 3 ; longGesture.delegate = self; // longGesture.allowableMovement = 50; [self.webView addGestureRecognizer:longGesture]; if (navigationType == UIWebViewNavigationTypeLinkClicked && […]

iOS:在UI(子)视图中处理UIGestureRecognisers

我想知道如何最好地解决以下问题: 我有一个单一的ViewController。 它的视图包含大量复杂的子视图(UIView的子类)。 由于这些UIViews的复杂性,初始化他们自己的UIGestureRecognisers并且执行相应的目标动作。 由于我想协调各种子视图的手势,我必须将单个ViewController设置为手势的委托。 这有很多种可能性。 1)初始化viewController中的所有手势(这将导致大量的viewController) 2)在UIVIews(getViewController)中定义一个协议,由ViewController实现 @protocol CustomViewDelegate <NSObject> @required – (UIViewController *)getViewController; @end 3)自定义UIViews的init方法,并使用ViewController作为选项。 – (id)initWithFrame:(CGRect)frame andViewController:(UIViewController *)vc; 解决这个问题最高雅的可能性是什么? 在UIView对象中实现目标动作可以吗? 感谢您的想法…

locationOfTouch和numberOfTouches

嗨我有这个识别器,设置2触摸,但它只返回一个,而不是两个CGPoint -(void)gestureLoad { UIGestureRecognizer *recognizer; recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(numTap2:)]; [(UITapGestureRecognizer *)recognizer setNumberOfTouchesRequired:2]; [self.view addGestureRecognizer:recognizer]; self.tapRecognizer = (UITapGestureRecognizer *)recognizer; recognizer.delegate = self; [recognizer release]; } – (void)numTap2:(UITapGestureRecognizer *)recognizer { CGPoint location = [recognizer locationInView:self.view]; NSLog(@"x %fy %f",location.x, location.y); } 据我所知,我用这两种方法循环触摸的数量,但我还没有想出如何: -(CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view { } -(NSUInteger)numberOfTouches { } 非常感谢!

如何让tableViewCell同时处理tap和longPress?

我把它放在cellForRowAtIndexPath中 let longPress = UILongPressGestureRecognizer(target: self, action: #selector(CalorieCountViewController.handleLongPress)) cell.addGestureRecognizer(longPress) longPress.cancelsTouchesInView = true let tapPress = UITapGestureRecognizer(target: self, action: #selector(CalorieCountViewController.handleTapPress)) cell.addGestureRecognizer(tapPress) tapPress.cancelsTouchesInView = true 并将这些代码(下面的代码)放在它的外面,并完全删除didSelectRowAtIndexPath函数,而是使用indexPathForSelectedRow来获取刚刚select的行用户。 func handleLongPress(sender: UILongPressGestureRecognizer){ let index = tableView.indexPathForSelectedRow! doSomething(index) } func handleTapPress(sender: UITapGestureRecognizer){ let index = tableView.indexPathForSelectedRow! doSomethingElse(index) } 结果indexPathForSelectedRow返回nil,但我没有select一行,并且在我的代码中没有任何“deselectRowAtIndexPath”。