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