public void WillAnimateCancel(UIDragInteraction interaction, UIDragItem item, IUIDragAnimating animator) { animator.AddAnimations(() => { FadeItems(new UIDragItem[] { item }, 1f); }); }
/// <summary> /// Required for drag operations from a table /// </summary> public UIDragItem[] GetItemsForBeginningDragSession(UITableView tableView, IUIDragSession session, NSIndexPath indexPath) { var todo = todoItems[indexPath.Row]; var stringToDrop = todo.Name; if (todo.Done) { // we can modify the data that is dragged stringToDrop += " [" + NSBundle.MainBundle.LocalizedString("Done", "") + "]"; } var data = NSData.FromString(stringToDrop, NSStringEncoding.UTF8); var itemProvider = new NSItemProvider(); itemProvider.RegisterDataRepresentation(UTType.PlainText, NSItemProviderRepresentationVisibility.All, (completion) => { completion(data, null); return(null); }); var dragItem = new UIDragItem(itemProvider); //dragItem.LocalObject = if your object is a subclass of NSObject return(new UIDragItem[] { dragItem }); }
public void OnEndDrag(PointerEventData eventData) { if (mTarget == null) { return; } GameObject go = eventData.pointerEnter; //鼠标下的物体 if (go == null) { return; } UIDragReceiver dr = go.GetComponentInParent <UIDragReceiver> ();//向上取解决UIDragReceiver被拦截的问题 if (dr == null || dr.enabled == false || (dr.recvMask & mTarget.typeMask) == 0 || object.ReferenceEquals(mTarget.GetComponentInParent <UIDragReceiver> (), dr)) { if (mFallback) { StartCoroutine(Fallback(mTarget.transform, mLocalBeginlPos)); } } else { if (onDragReceived != null) { onDragReceived(mTarget, dr); } recoverDepth(mTarget.transform); } mTarget = null; }
public UIDragItem[] GetItemsForBeginningDragSession(UITableView tableView, IUIDragSession session, NSIndexPath indexPath) { _sourceTableView = tableView; _sourceListView = Element; _dragItem = (Item)((IList)Element.ItemsSource)[indexPath.Row]; // https://forums.xamarin.com/discussion/66953/how-to-save-c-object-into-nsdata-and-get-the-same-object-from-nsdata //var data = NSKeyedArchiver.ArchivedDataWithRootObject(indexPath); //var data = NSData.FromString(placeName, NSStringEncoding.UTF8); var data = NSData.FromString(_dragItem.Id); var itemProvider = new NSItemProvider(); itemProvider.RegisterDataRepresentation(UTType.PlainText, NSItemProviderRepresentationVisibility.All, (completion) => { completion(data, null); return(null); }); var uidragItem = new UIDragItem(itemProvider); return(new[] { uidragItem }); }
public void OnBeginDrag(PointerEventData eventData) { GameObject go = eventData.pointerEnter; if (go == null) { return; } UIDragItem di = go.GetComponent <UIDragItem> (); if (di == null || di.enabled == false) { return; } mLocalBeginlPos = di.transform.localPosition; mTarget = mClone ? GameObject.Instantiate <UIDragItem> (di) : di; if (mClone) { mTarget.transform.SetParent(di.transform.parent, false); } mTargetParent = mTarget.transform.parent as RectTransform; RectTransformUtility.ScreenPointToLocalPointInRectangle(mTargetParent, eventData.position, eventData.pressEventCamera, out mLocalPointerPos); bringToTop(); }
// Helper method to obtain a drag item for the photo at the index path. UIDragItem DragItem(NSIndexPath indexPath) { var photo = Photo(indexPath); var itemProvider = photo.ItemProvider; var dragItem = new UIDragItem(itemProvider); dragItem.LocalObject = photo; return(dragItem); }
public UIDragItem[] GetItemsForBeginningSession(UIDragInteraction interaction, IUIDragSession session) { bool isEven = Convert.ToInt16(NumberLabel.Text) % 2 == 0; var provider = new NSItemProvider(new NSString(NumberLabel.Text)); var item = new UIDragItem(provider) { LocalObject = new NSNumber(isEven) }; return(new UIDragItem[] { item }); }
UIDragItem[] DragItems(NSIndexPath forAlbumAt) { var album = this.Album(forAlbumAt); var dragItems = album.Photos.Select((photo) => { var itemProvider = photo.ItemProvider; var dragItem = new UIDragItem(itemProvider); dragItem.LocalObject = photo; dragItem.PreviewProvider = photo.PreviewProvider; return(dragItem); }); return(dragItems.ToArray()); }
public void Init(UIDragItem uiDragItem) { items.Add(templateObj.GetComponent <UIItemShortcut>()); while (items.Count < 3) { var obj = Instantiate(templateObj, transform); items.Add(obj.GetComponent <UIItemShortcut>()); } for (int i = 0; i < items.Count; ++i) { items[i].Init(i, uiDragItem); } }
public void Init(int index, UIDragItem uiDragItem, int equipmentIndex = -1) { selectBG = transform.Find("SelectBG").GetComponent <Image>(); selectBG.color = Color.clear; itemImage = transform.Find("ItemImage").GetComponent <Image>(); countText = transform.Find("CountText").GetComponent <Text>(); this.index = index; this.uiDragItem = uiDragItem; this.equipmentIndex = equipmentIndex; ItemInventry.Instance.OnChangedItemCount += UpdateUI; Load(); }
public UIDragItem [] GetItemsForBeginningDragSession(UICollectionView collectionView, IUIDragSession session, NSIndexPath indexPath) { var selectedPhoto = GetPhoto(indexPath); var userActivity = selectedPhoto.OpenDetailUserActivity(); var itemProvider = new NSItemProvider(UIImage.FromFile(selectedPhoto.Name)); itemProvider.RegisterObject(userActivity, NSItemProviderRepresentationVisibility.All); var dragItem = new UIDragItem(itemProvider) { LocalObject = selectedPhoto }; return(new [] { dragItem }); }
public virtual UIDragItem[] GetItemsForBeginningSession(UIDragInteraction interaction, IUIDragSession session) { // no data needed since we directly have access to the view thanks to the OnTouched event // so we put stub data so that the provider doesn't provide null objects TouchesBegan(null, null); var provider = new NSItemProvider(new NSString("")); var item = new UIDragItem(provider) { LocalObject = new NSNumber(true) }; return(new UIDragItem[] { item }); //return new UIDragItem[] { new UIDragItem(default(NSItemProvider)) }; }
UIDragItem[] IUIDragInteractionDelegate.GetItemsForBeginningSession(UIDragInteraction interaction, IUIDragSession session) { var results = new List <UIDragItem>(); foreach (QRDetectionResult qrCode in QRCodes) { var itemProvider = new NSItemProvider((NSString)qrCode.Message); itemProvider.RegisterObject(qrCode.CroppedImage, NSItemProviderRepresentationVisibility.All); var item = new UIDragItem(itemProvider) { LocalObject = qrCode }; results.Add(item); } return(results.ToArray()); }
public UIDragItem[] GetItemsForBeginningSession(UIDragInteraction interaction, IUIDragSession session) { var point = session.LocationInView(interaction.View); var index = ImageIndex(point); if (index >= 0) { var image = Images[index]; var itemProvider = new NSItemProvider(image); var dragItem = new UIDragItem(itemProvider); dragItem.LocalObject = new NSNumber(index); return(new UIDragItem[] { dragItem }); } return(new UIDragItem[0]); }
/// <summary> /// 'GetItemsForBeginningSession' allows dragging from a view. /// </summary> public UIDragItem [] GetItemsForBeginningSession(UIDragInteraction interaction, IUIDragSession session) { var image = ImageView.Image; if (image == null) { return new UIDragItem [] { } } ; var provider = new NSItemProvider(image); var item = new UIDragItem(provider) { LocalObject = image }; // If a non empty array is returned, dragging is enabled. return(new UIDragItem [] { item }); }
private UITargetedDragPreview DragPreviewForItem(UIDragItem item) { var qrCode = item.LocalObject as QRDetectionResult; if (qrCode == null) { return(new UITargetedDragPreview(this)); } var previewView = new UIImageView(qrCode.CroppedImage); previewView.Frame = ConvertRectToView(this.ConvertFromImageRect(qrCode.RectInOriginalImage), Window); var target = new UIDragPreviewTarget(Window, previewView.Center); var parameters = new UIDragPreviewParameters() { VisiblePath = UIBezierPath.FromRoundedRect(previewView.Bounds, 20f) }; return(new UITargetedDragPreview(previewView, parameters, target)); }
public void WillAnimateDrop(UIDropInteraction interaction, UIDragItem item, IUIDragAnimating animator) { animator.AddAnimations(() => { FadeItems(new UIDragItem[] { item }, 0f); }); var movePoint = MovePoint; //DropPoint animator.AddCompletion((err) => { var index = item.LocalObject as NSNumber; if (index != null) { var i = index.Int32Value; if (i >= 0) { Views[i].Center = movePoint; Views[i].Alpha = 1f; } } }); }
public UITargetedDragPreview GetPreviewForLiftingItem(UIDragInteraction interaction, UIDragItem item, IUIDragSession session) { return(DragPreviewForItem(item)); }
public UITargetedDragPreview GetPreviewForLiftingItem(UIDragInteraction interaction, UIDragItem item, IUIDragSession session) { var imageView = item.LocalObject as UIImageView; if (imageView == null) { return(null); } return(new UITargetedDragPreview(imageView)); }
public UITargetedDragPreview GetPreviewForLiftingItem(UIDragInteraction interaction, UIDragItem item, IUIDragSession session) { var imageView = new UIImageView(Image) { Frame = this.Frame, ClipsToBounds = true, ContentMode = UIViewContentMode.ScaleAspectFill }; var target = new UIDragPreviewTarget(Superview, imageView.Center); return(new UITargetedDragPreview(imageView, new UIDragPreviewParameters(), target)); }
public UITargetedDragPreview GetPreviewForDroppingItem(UIDropInteraction interaction, UIDragItem item, UITargetedDragPreview defaultPreview) { var target = new UIDragPreviewTarget(this, IconView.Center, CGAffineTransform.Scale(new CGAffineTransform(), 0.1f, 0.1f)); return(defaultPreview.GetRetargetedPreview(target)); }
public UITargetedDragPreview GetPreviewForLiftingItem(UIDragInteraction interaction, UIDragItem item, IUIDragSession session) { var index = item.LocalObject as NSNumber; var i = index.Int32Value; return(new UITargetedDragPreview(Views[i])); }
public UITargetedDragPreview GetPreviewForCancellingItem(UIDragInteraction interaction, UIDragItem item, UITargetedDragPreview defaultPreview) { return(DragPreviewForItem(item)); }
public UITargetedDragPreview GetPreviewForLiftingItem(UIDragInteraction interaction, UIDragItem item, IUIDragSession session) { var image = item.LocalObject as UIImage; if (image == null) { return(null); } CGRect frame; if (image.Size.Width > image.Size.Height) { var multiplier = ImageView.Frame.Width / image.Size.Width; frame = new CGRect(0, 0, ImageView.Frame.Width, ImageView.Frame.Height * multiplier); } else { var multiplier = ImageView.Frame.Height / image.Size.Height; frame = new CGRect(0, 0, ImageView.Frame.Width * multiplier, ImageView.Frame.Height); } var previewImageView = new UIImageView(image) { ContentMode = UIViewContentMode.ScaleAspectFit, Frame = frame }; var target = new UIDragPreviewTarget(ImageView, ImageView.Center); return(new UITargetedDragPreview(previewImageView, new UIDragPreviewParameters(), target)); }
public UIDragItem[] HandleDragStarting(View element, IPlatformViewHandler handler) { UIDragItem[] returnValue = null; SendEventArgs <DragGestureRecognizer>(rec => { if (!rec.CanDrag) { return; } var args = rec.SendDragStarting(element); if (args.Cancel) { return; } if (!args.Handled) { UIImage uIImage = null; string clipDescription = String.Empty; NSItemProvider itemProvider = null; if (handler.PlatformView is UIImageView iv) { uIImage = iv.Image; } if (handler.PlatformView is UIButton b && b.ImageView != null) { uIImage = b.ImageView.Image; } if (uIImage != null) { if (uIImage != null) { itemProvider = new NSItemProvider(uIImage); } else { itemProvider = new NSItemProvider(new NSString("")); } if (args.Data.Image == null && handler.VirtualView is IImageElement imageElement) { args.Data.Image = imageElement.Source; } } else { string text = args.Data.Text ?? clipDescription; if (String.IsNullOrWhiteSpace(text)) { itemProvider = new NSItemProvider(handler.PlatformView.ConvertToImage()); } else { itemProvider = new NSItemProvider(new NSString(text)); } } var dragItem = new UIDragItem(itemProvider); dragItem.LocalObject = new CustomLocalStateData() { Handler = handler, View = handler.VirtualView as View, DataPackage = args.Data }; returnValue = new UIDragItem[] { dragItem }; } }, element); return(returnValue ?? new UIDragItem[0]); }
public UIDragItem[] HandleDragStarting(View element, IVisualElementRenderer renderer) { UIDragItem[] returnValue = null; SendEventArgs <DragGestureRecognizer>(rec => { if (!rec.CanDrag) { return; } var args = rec.SendDragStarting(element); if (args.Cancel) { return; } if (!args.Handled) { UIImage uIImage = null; string clipDescription = String.Empty; NSItemProvider itemProvider = null; if (renderer is IImageVisualElementRenderer iver) { uIImage = iver.GetImage()?.Image; if (uIImage != null) { itemProvider = new NSItemProvider(uIImage); } else { itemProvider = new NSItemProvider(new NSString("")); } if (args.Data.Image == null && renderer.Element is IImageElement imageElement) { args.Data.Image = imageElement.Source; } } else { string text = args.Data.Text ?? clipDescription; if (String.IsNullOrWhiteSpace(text)) { itemProvider = new NSItemProvider(renderer.NativeView.ConvertToImage()); } else { itemProvider = new NSItemProvider(new NSString(text)); } } var dragItem = new UIDragItem(itemProvider); dragItem.LocalObject = new CustomLocalStateData() { Renderer = renderer, View = renderer.Element as View, DataPackage = args.Data }; returnValue = new UIDragItem[] { dragItem }; } }, element); return(returnValue ?? new UIDragItem[0]); }
public void WillAnimateCancel(UIDragInteraction interaction, UIDragItem item, IUIDragAnimating animator) { animator.AddAnimations(() => { Alpha = 1f; }); }
public UITargetedDragPreview GetPreviewForDroppingItem(UIDropInteraction interaction, UIDragItem item, UITargetedDragPreview defaultPreview) { if (item.LocalObject == null) { return(null); } else { DropPoint = defaultPreview.View.Center; var target = new UIDragPreviewTarget(View, DropPoint); // HACK: why is this null? //return defaultPreview.GetRetargetedPreview(target); return(defaultPreview); } }