頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


macOSアプリの名前が日本語で表示されない

年賀状の宛名印刷アプリ「CSVから宛名印刷」をリリース
↑という記事を先日書きましたが、このアプリはその用途から日本語専用にしています。
多言語でアプリをリリースする場合、通常は基本が英語で、多言語を追加、みたいな感じにすると思いますし、実際過去に日本語専用のiOSアプリをリリースしたことがあります。
macOSアプリで日本語専用は初めてだなあ、と思いつつ同じような手順で開発、申請したわけですが、、、
一番最初のver1.0はすんなり審査通過でリリースに至りました。

ところが、すごくささいな修正でver1.1 -> ver1.1.1にする時に審査担当者から、アプリ名の表示がおかしいよ?とリジェクトされました。

iTunes Connect Name: CSVから宛名印刷
App Name when Installed: Postcard/AddressPrinter
App Name when Launched: CSVから宛名印刷
App Name in About/Hide/Quit Menu: CSVから宛名印刷

↑こんな感じやでー!と言われて、え?そうなの?と調べたら、確かに、LaunchPadで表示されるアイコンを見ると、、、
LaunchPadで表示したアイコン
↑あら?日本語になってない、、、?!気付かなかったなあ、、、
(ちなみに横のはベースが英語で日本語を追加している場合で、意図通り日本語のタイトルが表示されています)

審査担当者が、君がそれでいいならいいけど?みたいなコメントもあったのですが、これは修正した方がいいなと思い、いろいろと修正を試みた。しかし、、、最終的には諦めました。私にはできませんでした。
何回もリジェクトされた後に、もうこれでいいです、、、(涙)
とリプライしてver1.1.1をリリースしてもらいました。悲しい。
スポンサーサイト






SwiftUIのTextFieldがSonomaにしたら動かなくなった

「CSVから宛名印刷」というmacOSアプリのユーザーさんから「数値の入力ができない」と連絡がありまして、、、
そんなアホな?!と思いつつ調べたところ、どうやらそのユーザーさんのmacOSがSonomaでした。その頃はまだ自分は様子見でSonomaにしていない状態だったのですが、原因が他に思いつかなかったので、試しにSonomaにアップデートしたところ、見事に不具合が再現されました。
問題の箇所はこんな感じのTextFieldです。
TextField("x[mm]", value: binding_offsetX, 
formatter: numberFormatter2 , onEditingChanged: { (editingChanged) in
})

TextFieldにはいろんなイニシャライザがあるのですが、上記のはリファレンスにはなくて、deprecatedになってた、、、Xcode!教えてよ!

Deprecated
Use init(_:value:formatter:prompt:) instead. Add the onSubmit(of:_:) view modifier for the onCommit behavior. Use FocusState and focused(_:equals:) for the onEditingChanged behavior.


↑deprecatedなので今後はこういうの使ってね、とあるのでその通り↓このような形式で書き直しました。
TextField("x[mm]", value: binding_offsetX, formatter: numberFormatter2)
.focused($offsetXFieldIsFocused)
.onSubmit {
}
.onChange(of: offsetXFieldIsFocused) { newValue in
}

また、別なmacOSアプリ(AppPreview Editor)でも同様の不具合が発生したのですが、こちらはいろんな理由(値を保存するとか、undo/redoを有効にするとか)で上記のコードでは不十分でしたので、以下のようにしました。
import Combine

@State private var strokeWidthString: String = ""

TextField("", text: $strokeWidthString, onCommit: {
newMaterial .text_strokeWidth = value
viewModel.save([newMaterial], undoManager: undoManager)
})
.onReceive(viewModel.$model, perform: { value in
strokeWidthString = value.hoge
})
.onReceive(Just(strokeWidthString), perform: { newValue in
let filtered = newValue.retainNumericCharacters
if filtered != newValue {
strokeWidthString = filtered
}
})
だいぶはしょってるけど、こんな感じで記述しています。
ちなみにBing AIに教えてもらいました。ホント助かるわあ〜


  TopPage  



Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.