Native iOS Control Delphi XE4
Used in the Delphi Firemonkey Platform is very large, and is well organized. Of course Button, alone Firemonkey, and written.However, under certain circumstances in the OS the Native Control, because you will inevitably need to use a different API, about how to use the Native Control to learn.
// // XE4 & iOS Button Example // // http://blog.naver.com/simonsayz // // Ref. // SampleNiblessApp : http://rvelthuis.de/zips/sampleniblessapp.7z // CCR.NSAlertHelper : http://code.google.com/p/delphi-foundations/ // Delegate Example : http://blogs.embarcadero.com/teamj/2013/05/09/3817/ // XE2, Free Pascal : http://blog.naver.com/simonsayz/120162838290 // Source to Html : http://www.duketown.com/marcel/hyperdelphi.shtml // unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Platform.iOS, FMX.Layouts, FMX.Memo, // System.TypInfo, Macapi.ObjectiveC, Macapi.ObjCRuntime, iOSapi.CocoaTypes, iOSapi.foundation, iOSapi.uikit, iOSapi.CoreGraphics; type // IBtnDelegate = interface(NSObject) procedure BtnPressed; cdecl; end; // TBtnDelegate = class(TOCLocal) Private Finx : Integer; FMemo : TMemo; Public constructor Create( inx : integer; memo : TMemo ); function GetObjectiveCClass : PTypeInfo; override; procedure BtnPressed; cdecl; end; // TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private public BtnDelegate : TBtnDelegate; end; var Form1: TForm1; implementation {$R *.fmx} Constructor TBtnDelegate.Create ( inx : integer; memo : TMemo ); begin inherited Create; Self.Finx := 10; Self.Fmemo := Memo; end; function TBtnDelegate.GetObjectiveCClass : PTypeInfo; begin Result := TypeInfo(IBtnDelegate); end; // procedure TBtnDelegate.BtnPressed; begin inc(Finx); FMemo.Lines.add('iOS Btn Pressed '+IntToStr(Finx)); end; // procedure TForm1.Button1Click(Sender: TObject); Var Btn : UIButton; begin // Memo1.Lines.Add('FMX Btn Pressed'); // Btn := TUIButton.Wrap( TUIButton.OCClass.buttonWithType(UIButtonTypeRoundedRect) ); // Btn.setFrame ( CGRectMake(40,130,240,100) ); Btn.setTitle (NSStr('iOS UIButton Pressed'),UIControlStateNormal); // BtnDelegate := TBtnDelegate.Create(10,Memo1); // Btn.addTarget( BtnDelegate.GetObjectID, // target sel_getUid('BtnPressed'), // action UIControlEventTouchDown); // event // WindowHandleToPlatform(Self.Handle).View.addSubview(Btn); //亮点啊!!!cnsoft mark end; end.
Never giveup. Thanks the world.