0
A
回答
1
爲例與bannerViewWillLoadAd(原則是viewDidLoad中與UIViewController中相同):
ADBannerViewDelegate = interface(IObjectiveC)
['{95249262-9E7D-4841-B8E4-9EBBDADF3485}']
procedure bannerView(banner: ADBannerView; didFailToReceiveAdWithError: NSError); cdecl;
procedure bannerViewActionDidFinish(banner: ADBannerView); cdecl;
function bannerViewActionShouldBegin(banner: ADBannerView; willLeaveApplication: Boolean): Boolean; cdecl;
procedure bannerViewDidLoadAd(banner: ADBannerView); cdecl;
procedure bannerViewWillLoadAd(banner: ADBannerView); cdecl;
end;
TiOSBannerAdDelegate = class(TOCLocal, ADBannerViewDelegate)
private
[weak]FAd : TiOSBannerAd;
public
procedure SetAd(Ad: TiOSBannerAd);
procedure bannerView(banner: ADBannerView; didFailToReceiveAdWithError: NSError); cdecl;
procedure bannerViewActionDidFinish(banner: ADBannerView); cdecl;
function bannerViewActionShouldBegin(banner: ADBannerView; willLeaveApplication: Boolean): Boolean; cdecl;
procedure bannerViewDidLoadAd(banner: ADBannerView); cdecl;
procedure bannerViewWillLoadAd(banner: ADBannerView); cdecl;
end;
procedure TiOSBannerAdDelegate.bannerViewDidLoadAd(banner: ADBannerView);
begin
if (FAd <> nil) and (FAd.FAdControl <> nil) then
FAd.FAdControl.DoDidLoad;
end;
TiOSBannerAd = class(TInterfacedObject, IBannerAd)
private
FAd: ADBannerView;
FAdControl: TCustomBannerAd;
FDelegate: TiOSBannerAdDelegate;
FOrientationChangedId: Integer;
procedure OrientationChangedHandler(const Sender: TObject; const Msg: TMessage);
public
constructor Create;
destructor Free;
{ ICommonAd }
procedure CancelAction;
function IsActionInProgress: Boolean;
function IsLoaded: Boolean;
function GetAdUnitID: string;
procedure SetAdUnitID(const Value: string);
procedure LoadAd;
{ IBannerAd }
procedure SetBannerAdControl(const AValue: TCustomBannerAd);
function GetParent: TFmxObject;
function GetVisible: Boolean;
procedure Show;
procedure Hide;
procedure UpdateControlMetrics;
procedure UpdateContentFromControl;
end;
procedure TiOSBannerAd.SetBannerAdControl(const AValue: TCustomBannerAd);
var
SizesArray: NSMutableArray;
SizesSet: NSSet;
begin
FAdControl := AValue;
if FAdControl <> nil then
begin
FAd := TADBannerView.Create;
FDelegate := TiOSBannerAdDelegate.Create;
FDelegate.SetAd(Self);
FAd.setDelegate(FDelegate.GetObjectID);
SizesArray := TNSMutableArray.Create;
SizesArray.addObject((ADBannerContentSizeIdentifierLandscape as ILocalObject).GetObjectID);
SizesArray.addObject((ADBannerContentSizeIdentifierPortrait as ILocalObject).GetObjectID);
SizesSet := TNSSet.Wrap(TNSSet.OCClass.setWithArray(SizesArray));
SizesArray.release;
FAd.setRequiredContentSizeIdentifiers(SizesSet);
UpdateControlMetrics
end
else
begin
FAd.setDelegate(nil);
FAd.release;
FAd := nil;
FDelegate := nil;
end;
end;
相關問題
- 1. 覆蓋UITextField委託方法
- 2. 使用JavaScript覆蓋原生方法
- 3. iOS WKWebView.scrollView委託原因BAD_ACCESS
- 4. 覆蓋Tableview的數據源/委託方法
- 5. 如何從UIViewController調用應用程序委託的方法?
- 6. 覆蓋ios的uniqueIdentifier方法
- 7. 使用委託/ DLR Lambdas覆蓋實例方法?
- 8. 框架中的iOS委託方法
- 9. Swift UIWebView委託使用並覆蓋shouldStartLoadWith
- 10. 如何根據VS2013的委託定義生成C#委託,方法等?
- 11. 委託方法
- 12. 委託方法
- 13. 的委託方法
- 14. 如何在非UIVIewController單例中設置委託? (iOS)
- 15. 如何將派生類方法委託給協議方法?
- 16. UIAlertView委託方法不響應iOS 5.1
- 17. iOS FBRequest成功委託方法
- 18. 委託方法未被觸發 - iOS
- 19. 如何覆蓋原生資源?
- 20. 覆蓋方法生成器
- 21. IOS如何訪問委託
- 22. 有沒有更好的方法?委託 - >委託 - >委託
- 23. 如何從Cocoa中的子類委託方法調用超類委託方法?
- 24. iOS如何使用塊內的委託方法
- 25. 生成C#委託方法存根
- 26. NSURLConnection委託方法
- 27. UITableView委託方法
- 28. delphi覆蓋webbrowserH
- 29. 把另一個UIViewController的視圖放在一個「主」UIViewController中 - 委託方法
- 30. 如何覆蓋方法