可爱触摸 – 如何添加一个UIGestureRecognizer到UIBarButtonItem像在常见的撤消重做UIPopoverController方案在iPad应用程序?

可爱触摸 – 如何添加一个UIGestureRecognizer到UIBarButtonItem像在常见的撤消重做UIPopoverController方案在iPad应用程序?,第1张

概述问题 在我的iPad应用程序,我不能附加popover到按钮栏项目,只有按住并保持事件。但是这似乎是undo / redo的标准。其他应用程序如何做到这一点? 背景 我在我的UIKit(iPad)应用程序的工具栏中有一个撤消按钮(UIBarButtonSystemItemUndo)。当我按下撤消按钮,它会触发它的动作是undo :,并且正确执行。 然而,在iPad上撤消/重做的“标准UE约定”是按 问题

在我的iPad应用程序,我不能附加popover到按钮栏项目,只有按住并保持事件。但是这似乎是undo / redo的标准。其他应用程序如何做到这一点?

背景

我在我的UIKit(iPad)应用程序的工具栏中有一个撤消按钮(UIbarbuttonSystemItemUndo)。当我按下撤消按钮,它会触发它的动作是undo :,并且正确执行。

然而,在iPad上撤消/重做的“标准UE约定”是按下撤消执行撤消,但按下并按住按钮显示d出控制器,其中用户选择“撤消”或“重做”,直到控制器被解除。

附加popover控制器的正常方式是使用presentPopoverFrombarbuttonItem :,我可以很容易配置这个。为了让这只显示在按住后,我们必须设置一个视图来响应“长按”手势事件,如下面的代码段:

UILongPressGestureRecognizer *longPressOnUndoGesture = [[UILongPressGestureRecognizer alloc]        initWithTarget:self                action:@selector(handleLongPressOnUndoGesture:)];//broken because there is no customVIEw in a UIbarbuttonSystemItemUndo item[self.undobuttonItem.customVIEw addGestureRecognizer:longPressOnUndoGesture];[longPressOnUndoGesture release];

有了这个,按下并保持在视图上的方法handleLongPressOnUndoGesture:将被调用,在这个方法中,我将配置和显示popover为撤消/重做。到现在为止还挺好。

这个问题是没有视图可以附加到。 self.undobuttonItem是一个UIbuttonbarItem,而不是一个视图。

可能的解决方案

1)[理想]将手势识别器附加到按钮栏项目。可以在视图中附加手势识别器,但是UIbuttonbarItem不是视图。它有一个属性.customVIEw,但该属性是nil当buttonbaritem是一个标准的系统类型(在这种情况下是)。

2)使用另一个视图。我可以使用UIToolbar,但这将需要一些奇怪的命中测试和一个全面的黑客,如果甚至可能在第一位。没有其他替代视图使用,我可以想到。

3)使用customVIEw属性。标准类型像UIbarbuttonSystemItemUndo没有customVIEw(它是nil)。设置customVIEw将会删除它需要的标准内容。这将等于重新实现UIbarbuttonSystemItemUndo的所有外观和功能,如果甚至可能做的话。

如何将手势识别器附加到此“按钮”?更具体地说,如何在iPad应用程序中实现标准的按住并显示重做d出框?

想法?非常感谢,特别是如果有人实际上在他们的应用程序工作(我在想你,omni),并想分享…

解决方法 为了替代尝试在工具栏的子视图列表中查找UIbarbuttonItem的视图,你也可以尝试这个,一旦项目被添加到工具栏:

[barbuttonItem valueForKey:@"vIEw"];

这使用键值编码框架来访问UIbarbuttonItem的私有_vIEw变量,它保持它创建的视图。

授予,我不知道这在苹果的私人API的东西(这是公共方法用于访问一个公共类的私有变量 – 不像访问私有框架,以制作出一些苹果专用的效果或任何东西)它工作,而不是无痛。

总结

以上是内存溢出为你收集整理的可爱触摸 – 如何添加一个UIGestureRecognizer到UIBarButtonItem像在常见的撤消/重做UIPopoverController方案在iPad应用程序?全部内容,希望文章能够帮你解决可爱触摸 – 如何添加一个UIGestureRecognizer到UIBarButtonItem像在常见的撤消/重做UIPopoverController方案在iPad应用程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1087692.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存