ios是否可以让uiscrollview检测用户的单击,同时仍然提供其拖动,滚动功能?

Nat*_*kel 19 iphone tap touch uiscrollview ios

我目前正在使用UIScrollView作为滚动/拖动我在我的应用程序上显示的图形的光标/标记的方式.我使用scrollViewDidScroll等来检测contentoffset的位置,并根据此位置操纵我在屏幕上显示的内容.

我的问题是,是否可以检测用户在屏幕上的单击并获得此点击的位置(然后将内容偏移设置为此位置)?

我已经阅读了一些描述创建uiscrollview的子类的教程,但看起来这些子类只会占用一次,而不是拖动/滚动.

有没有人知道如何在我的UIScrollView上检测用户的单击,同时还具有滚动/拖动功能?
先感谢您!

AJS*_*AJS 33

对scrollView对象使用以下代码:

UITapGestureRecognizer *singleTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTap:)];
singleTapGestureRecognizer.numberOfTapsRequired = 1;
singleTapGestureRecognizer.enabled = YES;
singleTapGestureRecognizer.cancelsTouchesInView = NO;
[scrollView addGestureRecognizer:singleTapGestureRecognizer];
//[singleTapGestureRecognizer release]; Not needed in ARC-enabled Project
Run Code Online (Sandbox Code Playgroud)

}

- (void)singleTap:(UITapGestureRecognizer *)gesture {  
//handle taps   
}
Run Code Online (Sandbox Code Playgroud)


Lon*_*Guy 6

斯威夫特3

let scrollViewTapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(scrollViewTapped(_:)))
scrollViewTapGestureRecognizer.numberOfTapsRequired = 1
scrollViewTapGestureRecognizer.isEnabled = true
scrollViewTapGestureRecognizer.cancelsTouchesInView = false
scrollView.addGestureRecognizer(scrollViewTapGestureRecognizer)

func scrollViewTapped(_ sender: UITapGestureRecognizer) {
    print("UIScrollView was tapped.")
}
Run Code Online (Sandbox Code Playgroud)