gpt4 book ai didi

ios - 如何在 Xamarin Forms for iOS 中实现长按?

转载 作者:行者123 更新时间:2023-11-29 05:52:45 25 4
gpt4 key购买 nike

我需要在 Xamarin Forms for iOS 中实现长按,但没有找到我需要的帖子。我的工作代码如下。希望它对某人有帮助。

最佳答案

我的自定义类ImgButton继承自Grid。在其他情况下,您只需按照此[表]将 ViewRenderer 替换为另一个渲染器。[1]

由于我希望仅在某些实例上启用长按,因此 ImgButton 有一个属性 EnableLongPress。

using System;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using UIKit;

[assembly: ExportRenderer (typeof(ImgButton), typeof(ImgButtonRenderer))]
namespace MyApp.iOS.Renderers
{
public class ImgButtonRenderer : ViewRenderer<ImgButton,ImgButtonRenderer>
{
private UILongPressGestureRecognizer longPressGestureRecognizer;

protected override void OnElementChanged ( ElementChangedEventArgs<ImgButton> e )
{
base.OnElementChanged ( e );

if ( e.NewElement != null )
{
if ( ! e.NewElement.EnableLongPress )
return;

Action longPressAction = new Action ( () =>
{
if ( longPressGestureRecognizer.State != UIGestureRecognizerState.Began )
return;

Console.WriteLine ( "Long press for " + e.NewElement.Text );

// Handle the long press in the PCL
e.NewElement.OnLongPress ( e.NewElement );
});

longPressGestureRecognizer = new UILongPressGestureRecognizer ( longPressAction );
longPressGestureRecognizer.MinimumPressDuration = 0.5D;
AddGestureRecognizer ( longPressGestureRecognizer );
}

if ( e.NewElement == null )
{
if ( longPressGestureRecognizer != null )
{
RemoveGestureRecognizer ( longPressGestureRecognizer );
}
}

if ( e.OldElement == null )
{
if ( longPressGestureRecognizer != null )
AddGestureRecognizer ( longPressGestureRecognizer );
}
}
}

在 ImgButton 类中:

public void OnLongPress ( ImgButton button )
// Here when a long press happens on an ImgButton
{
// Inform current page
MessagingCenter.Send<ImgButton, ImgButton> ( this, "LongPressMessageType", button );
}

关于ios - 如何在 Xamarin Forms for iOS 中实现长按?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com