解决此问题的一种可能方法是:
创建一个具有公开公开的布尔引用(或添加到现有单元)的单元,例如:
unit iOSPatch;
interface
var
DisableAutoCapitalization: Boolean;
implementation
end.
复制一份source\fmx\FMX.Platform.iOS.pas,放到工程编译路径下(如工程文件夹)
修改 FMX.Platform.iOS 的副本,将第一步中的单元名称添加到 implementation uses 子句中,例如:
implementation
uses
iOSPatch,
System.Classes, System.SysUtils, System.Types, System.UITypes, System.TypInfo, System.Messaging, System.RTLConsts,
// ... rest of uses clause snipped
修改 TFMXViewBase.autocapitalizationType 方法,如下所示:
function TFMXViewBase.autocapitalizationType: UITextAutocapitalizationType;
begin
if DisableAutoCapitalization or FPassword or not (FKeyboardType in [TVirtualKeyboardType.Default, TVirtualKeyboardType.Alphabet, TVirtualKeyboardType.NamePhonePad]) then
Result := UITextAutocapitalizationTypeNone
else
Result := UITextAutocapitalizationTypeSentences;
end;
使用每次编辑的 OnEnter 事件根据您的需要将 DisableAutoCapitalization 设置为 True/False
或者,如果您希望它适用于所有编辑,则可以修改 TFMXViewBase.autocapitalizationType 以将 Result 设置为 UITextAutocapitalizationTypeNone 并忽略第一步。
很遗憾,我现在无法对此进行测试,因为我的机器上的部署出现了问题
编辑
我已经设法解决了我的部署问题,并测试了上面的代码,它有效。轻微的副作用:VK 上的 Shift 按钮短暂显示为“按下”