我正在检测用户是否已按下2秒钟:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
Run Code Online (Sandbox Code Playgroud)
这就是我处理长按的方式:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
Run Code Online (Sandbox Code Playgroud)
当我按下超过2秒钟时,文本"double oo"被打印两次.为什么是这样?我该怎么办?
iphone cocoa-touch objective-c gesture-recognition uigesturerecognizer
在iOS 7中,Apple添加了一个新的默认导航行为.您可以从屏幕的左边缘滑动以返回导航堆栈.但在我的应用程序中,此行为与我的自定义左菜单冲突.那么,是否可以在UINavigationController中禁用这个新手势?
objective-c uinavigationcontroller uigesturerecognizer ios ios7
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)];
[self.view1 addGestureRecognizer:tapGesture];
[self.view2 addGestureRecognizer:tapGesture];
[tapGesture release];
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,只view2
识别了点击.如果我注释掉第三行,那么点击就会view1
被识别出来.如果我是对的,你只能使用一次手势识别器,我不确定这是一个bug还是只需要一些文档.
我有一个UIImageView
,我希望能够调整大小和旋转等.
可以UIGestureRecognizer
添加到UIImageView
?
我想UIImageView
在运行时创建一个旋转和捏合识别器.
如何添加这些识别器?
我正在尝试将2添加UITapGestureRecognizers
到视图中,一个用于单击,一个用于双击事件.单击识别器按预期工作(单独).但我似乎无法让双击识别器工作.
试过具有类似性质的实验:cancelsTouchesInView
,delaysTouchesBegan
和delaysTouchesEnded
,但仍然无法正常工作.
当我双击时,单击识别器将始终被激活,双击事件也将被发送到超级视图.但似乎根本没有通知自定义双击识别器.
文件似乎表明上述3个属性可用于此目的.但我只是不确定应该设置什么值以及哪个识别器(单个,双个或两个).希望熟悉这一点的人可以提供帮助.
以下是最新更新的代码块.
// ****** gesture recognizers ******
- (void)addSingleAndDoubleTapGestureRecognizersToView:(UIView *)view
{
// single tap
UITapGestureRecognizer *singleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector(handleSingleTapOnView:)];
[singleTapRecognizer setNumberOfTouchesRequired:1];
[view addGestureRecognizer: singleTapRecognizer];
// double tap
UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: tableViewController action: @selector (handleDoubleTapOnView:)];
[doubleTapRecognizer setNumberOfTouchesRequired:2];
[singleTapRecognizer requireGestureRecognizerToFail: doubleTapRecognizer];
[view addGestureRecognizer: doubleTapRecognizer];
}
- (void)handleSingleTapOnView:(id)sender
{
}
- (void)handleDoubleTapOnView:(id)sender
{
}
Run Code Online (Sandbox Code Playgroud) 我有一个视图,UIPanGestureRecognizer
可以垂直拖动视图.所以在识别器回调中,我只更新y坐标来移动它.这个视图的超级视图有一个UIPanGestureRecognizer
水平拖动视图,只是更新x坐标.
问题是第一个UIPanGestureRecognizer
是事件是垂直移动视图,所以我不能使用超视图手势.
我试过了
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:
(UIGestureRecognizer *)otherGestureRecognizer;
Run Code Online (Sandbox Code Playgroud)
两者都会奏效,但我不希望如此.我希望只有在运动明显水平的情况下才能检测水平.所以如果UIPanGestureRecognizer
有一个方向属性会很棒.
我怎样才能实现这种行为?我发现文档很混乱,所以也许有人可以在这里更好地解释它.
我有一个UIView,并且我已添加了点击手势:
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Run Code Online (Sandbox Code Playgroud)
我试图在testfile中以编程方式调用它.
sendActionForEvent
Run Code Online (Sandbox Code Playgroud)
我正在使用此功能,但它无法正常工作:
myView.sendActionForEvent(UIEvents.touchUpDown)
Run Code Online (Sandbox Code Playgroud)
它显示发送到实例的无法识别的选择器.
我怎么解决这个问题?
提前致谢
在我的情况下,父UIViewController
包含UIPageViewController
哪个包含UINavigationController
哪个包含UIViewController
.我想向最后一个视图控制器添加滑动手势,但滑动处理就像它们属于页面视图控制器一样.我尝试以编程方式和通过xib执行此操作,但没有结果.
据我了解,在UIPageViewController
处理手势之前我无法实现目标.如何解决这个问题?
uiviewcontroller uigesturerecognizer ios uipageviewcontroller
我有一个看起来像这样的视图层次结构:
UIView (A)
UIView > UIImageView
UIView > UIView (B)
UIView > UIView (B) > Rounded Rect Button
UIView > UIView (B) > UIImageView
UIView > UIView (B) > UILabel
Run Code Online (Sandbox Code Playgroud)
我已将手势识别器附加到我的UIView(B).我面临的问题是我没有对UIView(B)中的Rounded Rect Button进行任何操作.singleTap手势识别器捕获/覆盖按钮的Touch Up Inside事件.
我怎样才能使它工作?我认为响应者链层次结构将确保按钮触摸事件将被优先使用,并且它将被触发!我错过了什么?
这是一些相关的代码:
#pragma mark -
#pragma mark View lifecycle (Gesture recognizer setup)
- (void)viewDidLoad {
[super viewDidLoad];
// double tap gesture recognizer
UITapGestureRecognizer *dtapGestureRecognize = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapGestureRecognizer:)];
dtapGestureRecognize.delegate = self;
dtapGestureRecognize.numberOfTapsRequired = 2;
[self.viewB addGestureRecognizer:dtapGestureRecognize];
// single tap gesture recognizer
UITapGestureRecognizer *tapGestureRecognize = …
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚这是如何以正确的方式完成的.我试图描绘这种情况:
我正在添加一个UITableView
作为a的子视图UIView
.在UIView
一个分接开关和响应pinchGestureRecognizer
,但这样做的情况下,实现代码如下停止反应,这两个手势(它仍然反应刷卡).
我已经使用以下代码,但它显然不是一个很好的解决方案,我相信有更好的方法.这是放在UIView
(超级视图):
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if([super hitTest:point withEvent:event] == self) {
for (id gesture in self.gestureRecognizers) {
[gesture setEnabled:YES];
}
return self;
}
for (id gesture in self.gestureRecognizers) {
[gesture setEnabled:NO];
}
return [self.subviews lastObject];
}
Run Code Online (Sandbox Code Playgroud) ios ×8
objective-c ×5
iphone ×4
cocoa-touch ×1
conflict ×1
ibaction ×1
ios7 ×1
ios8 ×1
swift ×1
uibutton ×1
uiimageview ×1
uiresponder ×1
uiview ×1