我正在尝试在iOS中执行与UserInteractionEnabled = false类似的操作,但似乎NSView中没有此属性。我还看到一种方法是实现hittest方法返回null,但是这个lass的hittest已经有一个非平凡的实现,我不认为我可以设置它返回null。我发现了一个名为acceptsTouchEnabled的(已弃用)属性,我想知道它是否可以实现与UserInteractionEnabled相同的功能。 该项目在Xamarin,btw。
完成FreeHandView = new PaintBoardControl
{
BackgroundColor = UIColor.Clear,
TranslatesAutoresizingMaskIntoConstraints = false,
UserInteractionEnabled = false
};
这是变量的原始声明,其中UserInteractionEnabled设置为false。
这是我的Mac应用中的hittest方法的实现:
public override NSView HitTest(CGPoint aPoint)
{
aPoint = ContentContainer.ConvertPointFromView(aPoint, this);
aPoint = new CGPoint(aPoint.X + _freehandViewLeftConstraint.Constant,
aPoint.Y + _freehandViewTopConstraint.Constant);
if (_hitTestBitArray != null && aPoint.X >= 0 && aPoint.Y >= 0 &&
_hitTestBitArrayWidth > aPoint.X && _hitTestBitArrayHeight > aPoint.Y)
{
var index = aPoint.Y * _hitTestBitArrayWidth + aPoint.X;
return _hitTestBitArray.Get((int)index) ? this : null;
}
return null;
}
答案 0 :(得分:0)
有时hitTest根本不工作尝试使用这样的东西也许mousedown可以帮助你
public class ExtendedNSView : NSView
{
public bool IsEnabled { get; set; }
public override void MouseDown(NSEvent theEvent)
{
if (IsEnabled)
{
base.MouseDown(theEvent);
}
}
}