Skip to content

Instantly share code, notes, and snippets.

@redent
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save redent/4c34f4328337ab1b7556 to your computer and use it in GitHub Desktop.
Save redent/4c34f4328337ab1b7556 to your computer and use it in GitHub Desktop.
MLPAutoCompleteTextField Xamarin binding adapted for Unified API and 64 bit platforms
using System;
using ObjCRuntime;
[assembly: LinkWith ("libMLPAutoCompleteTextFieldSDK.a", LinkTarget.Simulator | LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Arm64, Frameworks = "CoreGraphics", ForceLoad = true)]
XBUILD=/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
BTOUCH=/Developer/MonoTouch/usr/bin/btouch-native
PROJECT_ROOT=MLPAutoCompleteTextField
PROJECT=$(PROJECT_ROOT)/MLPAutoCompleteTextField.xcodeproj
TARGET=MLPAutoCompleteTextField
all: MLPAutoCompleteTextField.dll
libMLPAutoCompleteTextField-i386.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphonesimulator -configuration Release clean build
mv -f $(PROJECT_ROOT)/build/Release-iphonesimulator/lib$(TARGET).a $@
libMLPAutoCompleteTextField-%.a:
$(XBUILD) -project $(PROJECT) -target $(TARGET) -sdk iphoneos -arch $* -configuration Release clean build
mv -f $(PROJECT_ROOT)/build/Release-iphoneos/lib$(TARGET).a $@
libMLPAutoCompleteTextFieldSDK.a: libMLPAutoCompleteTextField-i386.a libMLPAutoCompleteTextField-armv7.a libMLPAutoCompleteTextField-armv7s.a libMLPAutoCompleteTextField-arm64.a
lipo -create -output $@ $^
MLPAutoCompleteTextField.dll: MLPAutoCompleteTextField.cs AssemblyInfo.cs libMLPAutoCompleteTextFieldSDK.a
$(BTOUCH) --new-style MLPAutoCompleteTextField.cs AssemblyInfo.cs --out=$@ --link-with=libMLPAutoCompleteTextFieldSDK.a,libMLPAutoCompleteTextFieldSDK.a
clean:
-rm -f *.a *.dll
using System;
using System.Drawing;
using Foundation;
using UIKit;
using ObjCRuntime;
using CoreGraphics;
namespace MLP
{
[Model, BaseType (typeof (NSObject)), Protocol]
public interface MLPAutoCompleteTextFieldDataSource {
[Export ("autoCompleteTextField:possibleCompletionsForString:"),
DelegateName("PossibleCompletionsForStringDelegate"),
DefaultValue(null)]
MLPAutoCompletionObject [] PossibleCompletionsForString (MLPAutoCompleteTextField textField, string text);
}
[BaseType (typeof (NSObject))]
[Model, Protocol]
public interface MLPAutoCompletionObject {
[Abstract]
[Export ("autocompleteString")]
string AutocompleteString { get; }
}
[Model, BaseType (typeof (NSObject)), Protocol]
public interface MLPAutoCompleteTextFieldDelegate {
[Export ("autoCompleteTextField:shouldStyleAutoCompleteTableView:forBorderStyle:"),
DelegateName("ShouldStyleAutoCompleteTableView"),
DefaultValue(true)]
bool ShouldStyleAutoCompleteTableView (MLPAutoCompleteTextField textField, UITableView autoCompleteTableView, UITextBorderStyle borderStyle);
[Export ("autoCompleteTextField:shouldConfigureCell:withAutoCompleteString:withAttributedString:forAutoCompleteObject:forRowAtIndexPath:"),
DelegateName("ShouldConfigureCell"),
DefaultValue(true)]
bool ShouldConfigureCell (MLPAutoCompleteTextField textField, UITableViewCell cell, string autocompleteString, NSAttributedString boldedString, MLPAutoCompletionObject autocompleteObject, NSIndexPath indexPath);
[Export ("autoCompleteTextField:didSelectAutoCompleteString:withAutoCompleteObject:forRowAtIndexPath:"),
EventArgs("DidSelectAutoCompleteString")]
void DidSelectAutoCompleteString (MLPAutoCompleteTextField textField, string selectedString, MLPAutoCompletionObject selectedObject, NSIndexPath indexPath);
[Export ("autoCompleteTextField:willShowAutoCompleteTableView:"),
EventArgs("WillShowAutoCompleteTableView")]
void WillShowAutoCompleteTableView (MLPAutoCompleteTextField textField, UITableView autoCompleteTableView);
}
[Model, BaseType (typeof (NSObject)), Protocol]
public interface MLPAutoCompleteSortOperationDelegate {
[Export ("autoCompleteTermsDidSort:")]
void AutoCompleteTermsDidSort (MLPAutoCompletionObject[] completions);
}
[Model, BaseType (typeof (NSObject)), Protocol]
public interface MLPAutoCompleteFetchOperationDelegate {
[Export ("autoCompleteTermsDidFetch:")]
void AutoCompleteTermsDidFetch (NSDictionary fetchInfo);
}
[BaseType (typeof (UITextField),
Delegates = new string [] { "AutoCompleteDataSource", "AutoCompleteDelegate" },
Events = new Type[] { typeof(MLPAutoCompleteTextFieldDataSource), typeof(MLPAutoCompleteTextFieldDelegate) })]
public interface MLPAutoCompleteTextField {
[Export ("autoCompleteTableView", ArgumentSemantic.Retain)]
UITableView AutoCompleteTableView { get; }
[Export ("autoCompleteDataSource", ArgumentSemantic.Retain)]
MLPAutoCompleteTextFieldDataSource AutoCompleteDataSource { get; set; }
[Export ("autoCompleteDelegate", ArgumentSemantic.Assign)]
MLPAutoCompleteTextFieldDelegate AutoCompleteDelegate { get; set; }
[Export ("autoCompleteFetchRequestDelay")]
double AutoCompleteFetchRequestDelay { get; set; }
[Export ("sortAutoCompleteSuggestionsByClosestMatch")]
bool SortAutoCompleteSuggestionsByClosestMatch { get; set; }
[Export ("applyBoldEffectToAutoCompleteSuggestions")]
bool ApplyBoldEffectToAutoCompleteSuggestions { get; set; }
[Export ("reverseAutoCompleteSuggestionsBoldEffect")]
bool ReverseAutoCompleteSuggestionsBoldEffect { get; set; }
[Export ("showTextFieldDropShadowWhenAutoCompleteTableIsOpen")]
bool ShowTextFieldDropShadowWhenAutoCompleteTableIsOpen { get; set; }
[Export ("showAutoCompleteTableWhenEditingBegins")]
bool ShowAutoCompleteTableWhenEditingBegins { get; set; }
[Export ("disableAutoCompleteTableUserInteractionWhileFetching")]
bool DisableAutoCompleteTableUserInteractionWhileFetching { get; set; }
[Export ("autoCompleteTableAppearsAsKeyboardAccessory")]
bool AutoCompleteTableAppearsAsKeyboardAccessory { get; set; }
[Export ("autoCompleteTableViewHidden")]
bool AutoCompleteTableViewHidden { get; set; }
[Export ("autoCompleteFontSize")]
nfloat AutoCompleteFontSize { get; set; }
[Export ("autoCompleteBoldFontName", ArgumentSemantic.Retain)]
string AutoCompleteBoldFontName { get; set; }
[Export ("autoCompleteRegularFontName", ArgumentSemantic.Retain)]
string AutoCompleteRegularFontName { get; set; }
[Export ("maximumNumberOfAutoCompleteRows")]
nint MaximumNumberOfAutoCompleteRows { get; set; }
[Export ("partOfAutoCompleteRowHeightToCut")]
nfloat PartOfAutoCompleteRowHeightToCut { get; set; }
[Export ("autoCompleteRowHeight")]
nfloat AutoCompleteRowHeight { get; set; }
[Export ("autoCompleteTableOriginOffset", ArgumentSemantic.Assign)]
CGSize AutoCompleteTableOriginOffset { get; set; }
[Export ("autoCompleteTableCornerRadius")]
nfloat AutoCompleteTableCornerRadius { get; set; }
[Export ("autoCompleteContentInsets", ArgumentSemantic.Assign)]
UIEdgeInsets AutoCompleteContentInsets { get; set; }
[Export ("autoCompleteScrollIndicatorInsets", ArgumentSemantic.Assign)]
UIEdgeInsets AutoCompleteScrollIndicatorInsets { get; set; }
[Export ("autoCompleteTableBorderColor", ArgumentSemantic.Retain)]
UIColor AutoCompleteTableBorderColor { get; set; }
[Export ("autoCompleteTableBorderWidth")]
nfloat AutoCompleteTableBorderWidth { get; set; }
[Export ("autoCompleteTableBackgroundColor", ArgumentSemantic.Retain)]
UIColor AutoCompleteTableBackgroundColor { get; set; }
[Export ("autoCompleteTableCellBackgroundColor", ArgumentSemantic.Retain)]
UIColor AutoCompleteTableCellBackgroundColor { get; set; }
[Export ("autoCompleteTableCellTextColor", ArgumentSemantic.Retain)]
UIColor AutoCompleteTableCellTextColor { get; set; }
[Export ("registerAutoCompleteCellNib:forCellReuseIdentifier:")]
void RegisterAutoCompleteCellNib (UINib nib, string reuseIdentifier);
[Export ("registerAutoCompleteCellClass:forCellReuseIdentifier:")]
void RegisterAutoCompleteCellClass (Class cellClass, string reuseIdentifier);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment