在滚动视图的可见区域外创建的视图的触摸事件
所以我有一个问题,我有这个视图结构: 控制器 - >查看 - > scrollView-> mainview 我有一个按钮在主视图中加载,但在Scrollview的可见内容之外.当我向上滚动以查看按钮时,触摸不起作用,但是如果将按钮放在可见区域中,则可以使用. 我还尝试了一个简单的图像视图并设置手势识别器(启用了用户交互),问题完全相同. 这是我定义按钮的地方: UIButton scrapbookbackground = new UIButton(new CGRect(SPACING, progresses_view.Frame.Y + progresses_view.Frame.Height + SPACING, View.Frame.Width - SPACING * 2, 90)); scrapbookbackground.BackgroundColor = UIColor.Clear.FromHex(0x4f80bc);
18 2024-04-26
编程技术问答社区
用于单击的Kinect夹点手势
我正在使用kinect v2.0.我需要使用握把执行点击.是否有一种方法可以处理v2.0中的握把,例如v1.8中的AddhandPointerGripHandler. 解决方案 在Microsoft Kinect SDK v2.0中, Body 类包括两个属性: 这两个属性都是 关闭(您可以检测到它以触发握把); lasso(这意味着手指向上指着手指除外) 未跟踪(未跟踪手状态) 打开(手是打开的) 未知 如果要检测手势,可以使用变量保存最后一个手状态,然后每次此变量通过封闭的一个开放状态. 显然,所有这些都可以在每次检测骨架框架时执行.
14 2024-04-23
编程技术问答社区
处理多个手势识别器
我遇到了一个理解的问题UIGestureRecognizers.我现在的目标是要有一组exurercognizer来执行不同的任务,例如: override func viewDidLoad() { mainScene = GameScene(size: self.view.bounds.size) main = view as! SKView mainScene.panRecognizer = UIPanGestureRecognizer(target: self, action: #selector(shiftView(recognizer:))) main.addGestureRecognizer(mainScene.panRecognizer) mainScene.tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(testTap(recog
iOS/Swift。如何实现backButton的longPressed动作?
我正在尝试为我的应用中的每个ViewController实现自定义返回按钮.我希望它有两个动作.如果按钮获取 ,则应正常行为并上升导航堆栈.如果按钮获得按更长的时间,则应转到预定义的ViewController. 我只能仅在swift中的backtton实现这一目标? 解决方案 您可以隐藏默认导航后退按钮,并以这种方式添加自定义按钮: import UIKit class SViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //hide your default back button navigationController!.setNavigationBarHidden(false, animated:true) //create a new button
20 2024-04-05
编程技术问答社区
按钮上方的活动指示器可以防止点击识别
我有一个uibutton" bn "和一个uiactivityIndi​​cator" ai ",在按钮上方(ai.center = bn.center). 只要 ai 是可见且动画的,我就无法按下 ai的框架下方的按钮,但我可以. 我是否必须将gesturercognition添加到 ai 中,还是有一种更聪明的方法来单击" ai ". 亲切的问候. $ h@rky 解决方案 您可以简单地设置ai.userInteractionEnabled = NO;吗?无论如何,我很惊讶它是在活动指标上启用的 - 这是标准组件还是您制作了子类? 顺便说一句,通常差的UI设计具有由另一种视图覆盖的交互元素,尤其是用来表明某物"忙"的互动元素,但是在您的示例中,它是可单击的缩略图图像似乎很有意义. 其他解决方案 您需要覆盖Uiview方法 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)eve
8 2024-04-05
编程技术问答社区
如何阻止UITapGestureRecognizer捕捉每一次点击?
你好,我有一个opengl视图,我有一个标签栏.我正在使用TAP识别器在屏幕上点击不同的3D对象.在标签栏中,我有一个按钮,但它不起作用,因为TAP识别器也捕获了这些敲击.我该如何停止?我已经尝试过: - (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([touch.view isKindOfClass:[UIBarButtonItem class]]) return FALSE; return TRUE; } 我认为我以某种方式比较错误的classess,因为当我调试时,它总是返回的. 解决方案 ,或者您只能做[singleTap setCancelsTouchesInView:NO].示例: UITapGestureRecognizer *singleTap = [ [UITa
8 2024-04-05
编程技术问答社区
NSLayoutConsstraint常数在UITapGestureRecognizer被点击后不影响视图
i有一个视图(self.view),该视图用另一个视图(而非图层)使用 UIView.mask属性.在self.view上,我安装了UIPanGestureRecognizer,因此当我在屏幕上泛滥时,掩模会变得越来越大.此外,我安装了self.view a UITapGestureRecognizer上,该>将动画UIImageView s添加到屏幕上,并且它们在UIBezierPath上进行动画.我正在使用约束更新面具大小. 问题是,在我点击屏幕以添加可动画视图之后,我在掩盖约束上停止影响的更改.我可以在日志中看到我确实会更改约束的常数,并且UIPanGestureRecognizer仍在工作. 因此,我的意思是掩码视图约束停止影响其视图.这是为什么?谢谢 视频插图: https://youtu.be/utnuc8nicgs 这是代码: class UICircle: UIView { init() { super.init(fr
14 2024-03-21
编程技术问答社区
iOS >> 拖动的视图跳回原始位置 >> 自动布局结合UIPanGestureRecognizer问题
我有几个Uiviews,用户应该能够拖放.我使用 uipangeSturerecognizer 来管理D&D操作(请参见下面的代码). D&D动作运行良好,但是当我开始拖动另一个Uiview时,我刚刚丢弃的操作正在跳回其原始位置. - (void)handlePan:(UIPanGestureRecognizer *)recognizer { CGPoint translation = [recognizer translationInView:self.view]; switch (recognizer.state) { case UIGestureRecognizerStateBegan: for (UIView* checkView in dragAndDropImageViewsArray) { if (checkView == recognizer.view) {
20 2024-03-21
编程技术问答社区
在pickerview didSelect上随机崩溃 : __cfrunloop_is_calling_out_to_a_source1_perform1_function
我已经收到了以下崩溃报告,但我不了解问题.line487点检查代表中的Pickerview是否是特定变量. Crashed: com.apple.main-thread 0 App 0x1001c5208 specialized NewCorrectiveVC.pickerView(UIPickerView, didSelectRow : Int, inComponent : Int) -> () (NewCorrectiveVC.swift:487) 1 App 0x1001c2028 @objc NewCorrectiveVC.pickerView(UIPickerView, didSelectRow : Int, inComponent : Int) -> () (NewCorrectiveVC.swift) 2 UIKit 0x197a83154 -[UIPi
8 2024-03-05
编程技术问答社区
在一个数组上映射一个无效(不返回的函数)。
标题是自称的,是否有任何映射的方法,例如addGestureRecognizer UIGestureRecognizers的数组.我一直在摆弄 的变化 recognizers.map(MyWebOutlet.addGestureRecognizer) 但是,由于内置地图必须返回另一个数组,需要一个返回某种值的函数.我应该在另一个返回功能中包装addGestureRecognizer还是另一种聪明的方式? 解决方案 map旨在返回一个对其进行给定转换应用于它的数组(通过转换每个元素)的数组.因此,自然而然地传递给它的功能必须返回转换的元素. 在您的情况下,您实际上并没有改变元素,而只想在函数的论点中使用它们.为此,您可以使用forEach. recognizers.forEach(MyWebOutlet.addGestureRecognizer)
10 2024-03-05
编程技术问答社区
超越骑行四/五指捏的手势?
我在应用程序中有一个要求,当用户在除主屏幕以外的任何其他屏幕上进行四指捏时,用户将被带到特定应用程序的主页.但是四个指捏手势是苹果的默认手势,将应用程序放在后台. 有什么特殊的方式可以骑这种手势?另外,如果我骑了手势,可以在Appstore中允许它吗? 任何帮助将不胜感激. 解决方案 请参阅苹果的人界面指南: 支持手势适当 避免将不同的动作与用户知道的标准手势关联.例如,请注意避免重新定义"从顶部滑动"手势的含义,该手势揭示了通知中心. 覆盖OS级别的手势是破坏可用性并创建不愉快用户的好方法.有可能用自定义UIGestureRecognizer覆盖4指的捏合,但这违反了苹果的可用性标准.
14 2024-03-03
编程技术问答社区
appDelegate中的触摸事件
这是我的问题. 我已经在我的应用程序中实现了推送通知,并且效果很好. 该应用接收消息 在AppDelegates中捕获:DidreceivereMoteNotification 创建一个新的Uiview,以显示收到新消息 我唯一的问题是我希望用户能够点击该消息,以便该应用程序打开消息ViewController.但是我似乎无法弄清楚如何捕获这种触摸,然后在AppDelegate中使用它.我的方法中有一个NSlog,应该打开新的ViewController,但似乎从未被调用. 任何帮助将不胜感激! 这是代码,它在didReceivereMoteNotification方法中: UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(gotoMessages)]; UIView *m
6 2024-03-02
编程技术问答社区
在无障碍模式下无法检测到手势
我正在编程一个应用程序,我需要在屏幕顶部上放置标签,并且每当用户触摸它(或在上面挥动手指)时,我需要标签文本才能大声朗读.我尝试了以下方式: 首先使标签= YES的可访问性元素. [labelInfo setIsAccessibilityElement:YES]; 但这不起作用. 然后,我尝试定义许多手势,例如两次触摸,单点.长点用一个和两个手指等,在那个手势级我写UIAccessibilityPostNotification中,以便可以大声朗读文本.但这似乎根本不起作用.这就是我这样做的方式: UITapGestureRecognizer *TapOnLabel = [[UITapGestureRecognizer alloc] initWithTarget:labelInfo action:@selector(TapOnLabel:)]; [TapOnLabel setIsAccessibilityElement:YES]; [TapOnLabel setNum
12 2024-01-09
编程技术问答社区
用Swift Generics识别子类对自定义类有效,但对UITapGestureRecognizer无效
我想在Swift中做些什么,但是我不知道如何实现它,也就是说,要删除给定班级类型的手势识别者,这是我的代码(和示例),我使用Swift 2.0 Xcode 7 beta 5: 我有3个从Uitapgesturerecognizer 继承的类 class GestureONE: UIGestureRecognizer { /*...*/ } class GestureTWO: UIGestureRecognizer { /*...*/ } class GestureTHREE: UIGestureRecognizer { /*...*/ } 将它们添加到视图 var gesture1 = GestureONE() var gesture11 = GestureONE() var gesture2 = GestureTWO() var gesture22 = GestureTWO() var gesture222 = GestureTWO(
10 2023-12-20
编程技术问答社区
UITapGestureRecognizer在iOS9上不工作
我有一个使用UITapGestureRecognizers的应用程序,该应用在ios9 beta 2中似乎不起作用. 他们成功打电话 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { NSLog(@"shouldReceiveTouch"); return YES; } ,但它不会击中任何其他Uitapgesture代表方法. 当我在iOS 8上运行的设备上运行相同的应用程序(从Xcode 7)时,它可以按预期运行. 还有其他人打这个吗? 这是我如何初始化uitapgesturerecognizer的方式. 编辑 如果我在代码中而不是在ViewController XIB中创建UitapgesturerEncognizer,则可以正常工作,因此在iOS9或其他方面进行了XIB解析的
24 2023-12-20
编程技术问答社区
SpriteKit手势识别器
嗨,我正在尝试在我的精灵套件游戏中使用手势识别器,我写了此代码 @interface GameScene() { UISwipeGestureRecognizer *swipeGestureLeft; ISwipeGestureRecognizer *swipeGestureRight; } @end @implementation GameScene -(id)initWithSize:(CGSize)size{ if(self = [ super initWithSize:size]){ } return self; } -(void)didMoveToView:(SKView *)view{ swipeGestureLeft = [[UIGestureRecognizer alloc]initWithTarget:self action:@selector(swi
4 2023-12-20
编程技术问答社区
使用Swift和Xcode 6对UIGestureRecognizer进行子类化-如何导入UIGestureRecognizerSubclass.h?
除非导入UIGestureRecognizerSubclass.h 在迅速的环境中,我很困惑如何导入此内容.我尝试了import UIGestureRecognizerSubclass.h,没有.h,但我仍然无法写入self.state. 我将如何完成此操作? 解决方案 您需要拥有或创建一个-bridging -header.h文件以导入OBJC标题,例如您想要的一个标题.导入线看起来像这样: #import 如果您的应用程序中还没有桥接标头文件,那么获取一个的最简单方法是将OBJC类添加到您的项目中,Xcode会询问您是否想要一个,然后创建文件并将其绑定进入设置.然后,您可以删除OBJC类. 该标头文件中的所有内容都会自动提供给您的Swift代码,无需在Swift文件中添加任何导入行. 其他解决方案 迅速等效的简单是: import UIKit.UIGestureRe
12 2023-12-20
编程技术问答社区
未检测到图像视图上的点击
我有一个应用程序,我在图像视图中从URL调用图像.图像视图添加为滚动视图的子视图.在我的实现文件中,我使用此代码 - (void)loadView { [super loadView]; // add gesture recognizers to the image view UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; UITapGestureRecognizer *twoF
56 2023-12-19
编程技术问答社区
您在哪里声明与Swift中的AddererRecognizer()有关的UitapgesturerEcognizer()?
问题 centerLabelGesture是在viewDidLoad()范围之外定义的,因此在称为.addGestureRecognizer(centerLabelGesture)时,尚未定义centerlabeLesture. import UIKit import SnapKit class ViewController: UIViewController { var screen: UIView! var centerLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() screen = UIView() centerLabel = UILabel() view.addSubview(screen) screen.addSubview(centerLabel) sc
20 2023-12-19
编程技术问答社区
实例化时从紧迫状态开始UIPANGESTURE事件
如果在实例化对象时已经按下手指,是否有办法开始使用uipangeStureEvent? 我有一种情况,当用户将发现在屏幕上时,我会在他们的手指下创建一个Uiview. 我希望他们能够将其拖动,因此我将UipangeStureregognizer放在Uiview中. 问题是,我需要摘下手指并放回原处,以触发uipangeSturerecognizer启动.我需要从已经按压状态开始. 您知道我如何从已经按压状态激活UIPANGESTURE,即我可以在实例化时获得已经活动的触摸事件并传递吗? 解决方案 您可以做到,但是在背后的视图上,UipangeStureregognizer需要已经存在您创建的视图(然后您必须基于此调整计算;并不困难; ). 的原因是,在您描述的情况下,触摸不属于您创建的Uiview,它属于其背后的Uiview,用户最初是最初触摸的情况.鉴于iOS触摸交付的性质,您无法轻易改变这一点.因此,让该视图(实际原始触摸视图)处理此触摸会更简单
12 2023-12-19
编程技术问答社区