HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了可爱触摸 – 如何添加一个UIGestureRecognizer到UIBarButtonItem像在常见的撤消/重做UIPopoverController方案在iPad应用程序?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题

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

背景

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

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

附加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];

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

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

可能的解决方

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

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

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

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

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

解决方法

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

[barButtonItem valueForKey:@"view"];

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

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

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。