10.2.2到現在已經出來一陣子了, 除了英巴各種介紹10.2.2的文件和影片之外, 大中華區也做過10.2.2的網路研討會, 參加的朋友超過130人. 前一陣子Delphi的產品經理Marco又發表了一篇blogo介紹10.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平台上現在雙擊手勢的處理比以前的版本更精確和迅速了.
Read More