我写了一个自定义控件,该控件支持 Drag ,当我在这个控件中按住不放,然后向 CBA 移动,当移动到 CBA 上面时,松开,
则自定义控件不处理 EButton1Up 事件,因为拖动的范围超过了这个控件的 Rect 了
问:怎么才能在Drag 时,检测如果超过了自身的Rect ,则处理 EButton1Up 事件
另外 HandlePointerEventL 中调用了 CCoeControl 的 HandlePointerEventL 事件
void CBButton::HandlePointerEventL(const TPointerEvent& aPointerEvent)
{
CCoeControl::HandlePointerEventL(aPointerEvent);
....
但还是不行
-------
对于这个问题的解决方案是,在 ConstructL 中添加一句话
this->ClaimPointerGrab(ETrue);
对于该方法的 sdk 说明如下:
ClaimPointerGrab()
IMPORT_C void ClaimPointerGrab(TBool aSendUpEvent=ETrue);
Description
Claims pointer grab from another control.
This ensures that all subsequent pointer events are delivered to it and not to the control that originally owned the grab.
The function allows a control to claim the pointer grab only if the pointer is already grabbed by another control.
Parameters
|