RAD Studio10.2.2的隱藏功能

Posted by on in Blogs

10.2.2到現在已經出來一陣子了, 除了英巴各種介紹10.2.2的文件和影片之外, 大中華區也做過10.2.2的網路研討會, 參加的朋友超過130. 前一陣子Delphi的產品經理Marco又發表了一篇blogo10.2.2額外的一些功能:

 

http://blog.marcocantu.com/blog/2018-january-http-improvements-1022.html

 

其實10.2.2除了上面已經說明的更新之外, 尚有2個重要的更新一個是Android另一個是屬於iOS.

先談談Android, 那就是10.2.2終於大致改正了鍵盤bug, 這個bug主要的原因是FireMonkey在顯示鍵盤之前沒有取得正確的大小區域, 因此也造成後續鍵盤隱藏鍵後的其餘bug.看看下面10.2.2和之前版本的差異, 10.2.2在示鍵盤之前先正確取得顯示的區域大小, 再顯示鍵盤:

 

10.2.2之前

10.2.2

procedure TVKListener.onVirtualKeyboardShown;

begin

 

  TThread.Synchronize(nil, procedure

  begin

    FKeyboardService.SetState(TVirtualKeyboardAndroid.TvkbState.Shown);

    FEvent.SetEvent;

  end);

end;

procedure TVKListener.onVirtualKeyboardShown;

begin

  WaitingForContentChanged(Self);

  TThread.Synchronize(nil, procedure

  begin

    FKeyboardService.SetState(TVirtualKeyboardAndroid.TvkbState.Shown);

    FEvent.SetEvent;

  end);

end;

 

所以這個煩惱了多個版本的bug終於修正了.

 

另外一個更強是屬於iOS平台, 原本FireMonkey就支援手勢功能, iOS平台上的雙擊手勢有時會和LongTap分不太清楚

因此10.2.2 加入了雙擊手勢的Recognizer,

    TInteractiveGesture.DoubleTap:

      begin

        DoubleTapRecognizer := TUITapGestureRecognizer.Alloc;

        DoubleTapRecognizer := TUITapGestureRecognizer.Wrap(DoubleTapRecognizer.initWithTarget(GetObjectID, sel_getUid('HandleDoubleTap:')));

        DoubleTapRecognizer.setNumberOfTapsRequired(2);

        DoubleTapRecognizer.setDelegate(GetObjectID);

        View.addGestureRecognizer(DoubleTapRecognizer);

        DoubleTapRecognizer.release;

      end;

並且加入了新的處理雙擊手勢的處理函式:

procedure TFMXViewBase.HandleDoubleTap(gestureRecognizer: UITapGestureRecognizer);

var

  TouchPoint: NSPoint;

begin

  if gestureRecognizer.state = UIGestureRecognizerStateEnded then

  begin

    TouchPoint := CorrectLocationInView(gestureRecognizer, View, Form);

    DblTap(TouchPoint.Y, TouchPoint.Y);

  end;

end;

 

其效就是在10.2.2版的iOS平台上現在雙擊手勢的處理比以前的版本更精確和速了.

 

 



Comments

Check out more tips and tricks in this development video: