mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 11:42:04 +08:00
Fixed: Custom ActionItem gets displaced in IOS
This commit is contained in:
@ -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) {
|
||||||
|
Reference in New Issue
Block a user