Einzelnen Beitrag anzeigen

Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#1

UINavigationController mit UIImage und UITapGestureRecognizer

  Alt 3. Feb 2014, 14:48
Hallo,
meine App besitzt einen NavigationController mit einem Logo auf der linken Seite.
Wenn das Logo angeklickt wird, öffnent sich ein Menü (NavCont. wird nach rechts geschoben -> UIImage nicht mehr an gleicher Stelle).
Hier mal der Code:
Delphi-Quellcode:
procedure StyleNavBar(ANavigationController: TTMSFMXNativeUINavigationController; ALogoClickHandler: UITapGestureRecognizer; ATitle: String);
var nd: NSDictionary;
    background: UIView;
    navBarIcon: UIImageView;
    bgdRect: CGRect;
    imgRect: CGRect;
begin
 ANavigationController.Title:= ATitle;

 // Hintergrund
 bgdRect:= ANavigationController.NavigationController.navigationBar.frame;
 bgdRect.size.height:= bgdRect.size.height+Abs(MARGIN_TOP);
 bgdRect.origin.y:= MARGIN_TOP;

 background:= TUIView.Wrap(TUIView.Alloc.initWithFrame(bgdRect));
 background.setBackgroundColor(AlphaColorToUIColor($FF3E3894));

 // Logo
 navBarIcon:= TUIImageView.Wrap(TUIImageView.Alloc.initWithImage(ImageFromBitmap(BitmapContainer.Items[0].Bitmap)));

 imgRect:= navBarIcon.frame;
 imgRect.origin.x:= 5;
 imgRect.origin.y:= ((bgdRect.size.height/2)-(bgdRect.size.height/2))+Abs(MARGIN_TOP);

 navBarIcon.setUserInteractionEnabled(true);
 navBarIcon.setFrame(imgRect);
 navBarIcon.setContentMode(UIViewContentModeScaleAspectFit);
 if Assigned(ALogoClickHandler) then
  navBarIcon.addGestureRecognizer(ALogoClickHandler);

 // Zusammenführung
 background.addSubview(navBarIcon);
 ANavigationController.NavigationController.navigationBar.insertSubview(background,1);
 nd:= TNSDictionary.Wrap(TNSDictionary.OCClass.dictionaryWithObject((AlphaColorToUIColor($FFF1803C) as ILocalObject).GetObjectID, (NSForegroundColorAttributeName as ILocalObject).GetObjectID));
 ANavigationController.NavigationController.navigationBar.setTitleTextAttributes(nd);
end;
Anwendung:
StyleNavBar(MainView,TUITapGestureRecognizer.Wrap(TUITapGestureRecognizer.Alloc.initWithTarget(aClickHandler.GetObjectID,sel_getUid('Click'))),'Test');

Jetzt ergibt sich das Problem, dass der ClickHandler nicht mehr reagiert, wenn das Menü offen ist.
Erst wenn sich das Logo wieder an der alten Position befindet, wird der Klick erkannt.
Jemand eine Idee, woran das liegt?

Viele Grüße
Croco
  Mit Zitat antworten Zitat