Tag: uigesturerecognizer

UIView对象中的UIGestureRecognizer

我创build了一个UIViewController ,其中包含一个UIView对象。 我希望UIView对象响应一个手指的一个水龙头,还捏两个手指。 我已经点击xib中的“用户交互启用”和“多点触摸”选项。 我在UIView函数initWithFrame:中创build了UITapGestureRecognizer和UIPinchGestureRecognizer ,因为它是UIView对象的唯一入口点。 但该对象不响应UIGestureRecognizer对象。 为什么? 或者,放置UIGestureRecognizer对象的最佳位置在哪里? – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code // single tap UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; singleTap.numberOfTapsRequired = 1; singleTap.numberOfTouchesRequired = 1; [self addGestureRecognizer: singleTap]; // 2 fingers pinch UIPinchGestureRecognizer* doubleMove = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleMove:)]; [self addGestureRecognizer: doubleMove]; […]

UILongPressGestureRecognizer被激发了两次

当用户长时间按住地图超过2-4秒时,UILongPressGestureRecognizer被触发两次。 我怎样才能确保它只会被解雇一次? func action(gestureRecognizer:UIGestureRecognizer) { println("long pressed on map") override func viewDidLoad() { super.viewDidLoad() manager = CLLocationManager() manager.delegate = self manager.desiredAccuracy = kCLLocationAccuracyBest if activePlace == -1 { manager.requestWhenInUseAuthorization() manager.startUpdatingLocation() } else { var uilpgr = UILongPressGestureRecognizer(target: self, action: "action:") uilpgr.minimumPressDuration = 2.0 myMap.addGestureRecognizer(uilpgr) } } func action(gestureRecognizer:UIGestureRecognizer) { println("long pressed on map") var touchPoint […]

我如何检测UITableViewCells以外的UITableView的水龙头 – 即在部分标题?

我想要处理不包括单元格的UITableView的水龙头。 换句话说,页眉和页脚。 我可以添加一个手势识别器的标题(没有页脚),但最后一节底部的空间不响应水龙头。 而不是添加上面的手势识别器,我尝试添加一个手势识别器的表,但它阻止tableView:didSelectRowAtIndexPath:被调用。 我尝试了各种各样的UIGestureRecognizerDelegate调用没有太多的运气。 我终于通过在识别器上设置cancelsTouchesInView = NO (我认为这是秘密)并实现了gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:在委托中,让tableView被触及并调用tableView:didSelectRowAtIndexPath: 处理程序必须过滤掉单元格上的水龙头,但至less可以工作。 (另外,在UITableView indexPathForRowAtPoint:point发现一个bug indexPathForRowAtPoint:point有时候会返回无效的indexPaths 。) 我的问题是:有没有更好的方法来获取单元格视图,以防止触摸/手势进入表格? (如果没有人给我更好的想法,我会发布代码。)

UILongPressGestureRecognizer可以和touchesMoved这样的触摸事件一起使用吗?

如果我添加一个UILongPressGestureRecognizer对象是有办法得到一个touchesMoved事件在该对象触发后,我的longGestureselect器响应longpress手势,而不必先举起你的手指? 我所看到的是,一旦select器识别出长手势, touchesMoved事件将不会响应,直到您从手指上移开手指。 换句话说,你不能按,暂停,移动。 这甚至可以通过手势识别器来实现,或者是唯一的方法就是使用轻触并保持方式。 我希望这是有道理的。 谢谢。

如何在所有单元格周围的空白区域接收UICollectionView的触摸

我有一个UICollectionView有不同的项目。 当我点击一个项目,我使用: -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 找出什么被触动,然后基本上设置该视图的α为0来隐藏它。 这一切工作正常。 现在我想要做的是当你点击围绕所有UICollectionViewCell所有的视图再次出现。 我很难find一种方法,可以让我知道单元格周围的空白区域何时被触摸。 有没有一个很好的方法来做到这一点? 我曾尝试设置一个手势识别器,但是当我这样做,我的方法 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath 不叫。 是否有一些方法来实现手势识别器,并从那里确定是否点击一个单元格,如果隐藏该单元格,否则显示所有隐藏的单元格? 谢谢。

只捕获UIView 2手指UIPanGestureRecognizer

我在我的视图控制器中有几个UIScrollView 。 我想叠加一个视图,通过UIPanGestureRecognizer捕获2手指轻扫,这将不loggingUIScrollView轻扫手势。 当我用两指手势在我的内容上放置一个透明的视图时,我的水龙头和一个手指轻扫没有被检测到。 我试图覆盖pointInside:方法返回NO但它不logging我的2指滑动。 效果类似于4个手指轻扫来改变应用程序。

UIGestureRecognizer添加到UIWindow后,为什么iPad不响应?

背景:我需要查看应用程序中发生的每个UITouch,并查看UITouch是否不在某个UIImageView中。 WildcardGestureRecognizer看起来非常有前途,我试了一下。 (代码在这里): 如何截取MKMapView或UIWebView对象上的触摸事件? 它非常适合沙箱/快速创build的应用程序。 但是,这个应用程序并没有反映实际目标项目的复杂性。 目标项目有一个表视图控制器等等。 将WildcardGestureRecognizer添加到更多的iPad应用程序之后,我发现在添加手势识别器之后,其他控件都不起作用,并且发生一次点击。 这里有一些代码,我正在玩这个想法。 此外,沙箱代码还没有控制它(如一个表视图控制器,甚至一个UIButton),看看他们的工作后,添加到UIWindow手势识别器。 我应该select除UIWindow以外的其他东西添加手势识别器,或者我会遇到同样的问题,不pipe? 有没有更好的办法? 沙箱代码: https : //github.com/finneycanhelp/GestureKata

使用长按时出现两个动作表

在我的viewDidLoad里面,我有以下几点: UILongPressGestureRecognizer *longpressGesture =[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongpressGesture:)]; longpressGesture.minimumPressDuration = 1; longpressGesture.allowableMovement = 5; longpressGesture.numberOfTouchesRequired = 1; [self.tableView addGestureRecognizer:longpressGesture]; [longpressGesture release]; 我创build了以下内容: -(IBAction) handleLongpressGesture:(UIGestureRecognizer *) sender { UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Delete Record?" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Yes",@"No",nil]; [actionSheet showInView:self.view]; [actionSheet release]; } 使用模拟器,当我长时间按下时,两个动作表显示出来,而不是一个。 任何想法,为什么这是这样的? 这是模拟器的问题吗?

目标C:ViewController中的GestureRecognizer – >保留周期?

我有一个我的ViewControllers(VC)的头文件中定义的以下属性: @property(nonatomic, retain) IBOutlet UIImageView *articleImageView1; 在VC的实现中,在方法viewDidLoad ,我将TapRecognizers附加到以下属性: UITapGestureRecognizer *captureImage1TapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self [self.articleImageView1 addGestureRecognizer:captureImage1TapRecognizer]; VC UIImageView 。 这个UIImageView是否也通过GestureRecognizer强有力地包含了VC? 这是一个保留周期的经典例子吗? 如果是这样,这是正确的解决scheme? -(void)viewDidUnload { … [self setArticleImageView1:nil]; … [super viewDidUnload]; }

键盘closures和UITableView触摸问题

所以我有这个UITableView包含几行,单击一行时,另一个UIViewController被推送与特定的行的细节。 我的问题是,我想closures任何触摸屏幕上(也在UITableView )的键盘,但是当我这样做,并单击UITableView行,键盘didSelectRow ,但didSelectRow方法不起作用。 一旦点击单元格,它不会推新的ViewController 。 另一种方式,一旦我改变它,你可以单击TableView单元格,键盘解散和其他ViewController被推动,但在任何其他地方的触摸不会解除键盘。 我该怎么办? – (IBAction)hideKeyboard:(id)sender { [tfFoodsSearchQuery resignFirstResponder]; } – (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([touch.view isKindOfClass:[UITableView class]]) { // we touched a button, slider, or other UIControl return YES; // handle the touch } NSLog(@"Touch"); return NO; // ignore the touch } – (void)viewDidLoad { [super viewDidLoad]; // […]