Fixed: Custom ActionItem gets displaced in IOS

This commit is contained in:
Tsvetan Raikov
2016-06-15 18:18:37 +03:00
parent 921d7180ca
commit 6f241ff473

View File

@ -139,14 +139,11 @@ export class ActionBar extends common.ActionBar {
var barButtonItem: UIBarButtonItem; var barButtonItem: UIBarButtonItem;
if (item.actionView && item.actionView.ios) { if (item.actionView && item.actionView.ios) {
let buttonView: UIButton = UIButton.buttonWithType(UIButtonType.UIButtonTypeSystem); if (item.hasListeners(ActionItem.tapEvent)) {
// Disable the interaction of the custom view so that the tap event of the button is triggered var recognizer = UITapGestureRecognizer.alloc().initWithTargetAction(tapHandler, "tap");
(<UIView>item.actionView.ios).userInteractionEnabled = false; item.actionView.ios.addGestureRecognizer(recognizer);
}
buttonView.addTargetActionForControlEvents(tapHandler, "tap", UIControlEvents.UIControlEventTouchUpInside); barButtonItem = UIBarButtonItem.alloc().initWithCustomView(item.actionView.ios);
buttonView.frame = CGRectMake(0, 0, item.actionView.getMeasuredWidth(), item.actionView.getMeasuredHeight());
buttonView.addSubview(item.actionView.ios);
barButtonItem = UIBarButtonItem.alloc().initWithCustomView(buttonView);
} }
else if (types.isNumber(item.ios.systemIcon)) { else if (types.isNumber(item.ios.systemIcon)) {
barButtonItem = UIBarButtonItem.alloc().initWithBarButtonSystemItemTargetAction(item.ios.systemIcon, tapHandler, "tap"); barButtonItem = UIBarButtonItem.alloc().initWithBarButtonSystemItemTargetAction(item.ios.systemIcon, tapHandler, "tap");
@ -244,16 +241,12 @@ export class ActionBar extends common.ActionBar {
if (actionItem.actionView && actionItem.actionView.ios) { if (actionItem.actionView && actionItem.actionView.ios) {
let measuredWidth = actionItem.actionView.getMeasuredWidth(); let measuredWidth = actionItem.actionView.getMeasuredWidth();
let measuredHeight = actionItem.actionView.getMeasuredHeight(); let measuredHeight = actionItem.actionView.getMeasuredHeight();
let buttonView = (<UIView>actionItem.actionView.ios).superview;
view.View.layoutChild(this, actionItem.actionView, 0, 0, measuredWidth, measuredHeight); view.View.layoutChild(this, actionItem.actionView, 0, 0, measuredWidth, measuredHeight);
if (buttonView) {
buttonView.frame = CGRectMake(0, 0, measuredWidth, measuredHeight);
}
} }
}); });
super.onLayout(left, top, right, bottom); super.onLayout(left, top, right, bottom);
this.ios.setNeedsLayout();
} }
public layoutNativeView(left: number, top: number, right: number, bottom: number) { public layoutNativeView(left: number, top: number, right: number, bottom: number) {