まだどこにもないアプリを作る

アプリ開発でつまづいたところなどを中心に記事にして行きます。

新しくメモアプリやTodoアプリを作る人に見てもらいたい「メモアプリ/Todoアプリに必要な機能一覧」

f:id:rils_k:20220214093136p:plain

 

私は普段からメモアプリをよく使用しており,

先日自分でもメモアプリを作ろうとしてみたので、その時に考えたことをメモします。

 

以下一覧

 

必須 これがないとメモ/Todoアプリではない

  • メモ追加
  • メモ削除
  • データ保存機能
  • チェック機能(タスクを終えたかそうでないか)

ほぼ必須

  • メモ編集 更新
  • フォルダ機能(フォルダ作成 削除 名前変更)
  • 作成日表示
  • 更新日表示
  • 並び替え機能 (作成日順 更新日順 名前順)
  • オフラインで使用可能

ないと困る

  • 検索機能
  • 画像追加機能
  • 簡単にコピー&ペースト機能
  • 有機
  • オンラインメモ同期
  • フォルダ間移動機能
  • URL WebLink検知
  • 未記入・一文字も入力されていないメモは自動的に削除機能
  • 最近削除した項目・アーカイブ・ゴミ箱機能
  • メモをまとめて選択機能(削除 フォルダ移動 共有)
  • 以前開いていたフォルダを記憶
  • 通知機能(Todoアプリではほぼ必須)

あると絶対いい

  • 総メモ数表示(メモがフォルダに何個入っているか)
  • 文字カウント
  • 箇条書きモード
  • バックアップ機能
  • アプリを終了したら自動セーブ機能
  • タグ機能
  • 優先度設定機能
  • Undo/Redo機能
  • パスコードロック機能
  • メモ複製機能
  • さまざまなタイプのファイルを添付できる機能
  • 太字 下線 取り消し線 斜体 文字色
  • 洗練されたデザイン

オプション的機能

  • テーマカラー変更
  • フォント変更
  • 効果音
  • アニメーション
  • ランダムソート
  • 文字の大きさ変更
  • マニュアルオーダー
  • ウィジェット機能
  • 全メモ消去機能
  • 読み上げ機能
  • 手書きメモ機能
  • インデント調整
  • 表機能
  • ピンで固定機能
  • 文書スキャン機能
  • プリント機能

 

まだまだあるのではないかと思います

 

日常的に使えるレベルのメモアプリを作るのって結構労力かかりそうですね。

 

お読みいただきありがとうございました。

 

 

Swift SwiftUI - Date()で特定の日付を定義

SwiftUI Date 特定 日付 定義 初期値

こういうキーワードで検索してもヒットしにくかったので記事にしました。

 

以下のコードで2000年1月1日のDate型の変数を定義することができます。

let calendar = Calendar(identifier: .gregorian)

let date = calendar.date(from: DateComponents(year: 2000, month1, day: 1))

 

 

以下のサイト様を参考にさせていただきました。詳しくはこちらをご覧ください。

zenn.dev

 

【SwiftUI】TextField TextEditorで文字を打つごとに検知2

↓以前書いたこの記事では

【SwiftUI】TextfieldやText Editorで文字が入力されるごとに検知する方法。 - まだどこにもないアプリを作る

 

バインディングの変数が変わることを検知する

onChangeモディファイアを使うことで実装しましたが

 

TextfieldやTextEditorの文字の変数が

@ObservedObject変数の場合だとエラーが出てしまうので実装できません

 

その場合は以下の実装になります。

 

$task.nameはObservedObjectです。

まずCombineをインポートします。

import Combine

TextFieldの場合↓

TextField("enter the name", text: $task.name)

                    .onReceive(NotificationCenter.default.publisher(for: UITextField.textDidChangeNotification)){ obj in

                        print("UITextField.textDidChangeNotification")

                    }

TextEditorの場合↓

TextEditor(text: $task.name).frame(width: 300, height: 200)

                        .onReceive(NotificationCenter.default.publisher(for: UITextView.textDidChangeNotification)){ obj in

                                print("UITextView.textDidChangeNotification")

                                }

 

 

↓参考サイト様

www.choge-blog.com

 

 

これを実装してみてCombineというものがあることを知りました。

どっかのライブラリかと思ったらApple純正のフレームワークなんですね。

まだなに使うのかよくわからないけど

 

 

 

↓UIKITでの方法

swift textViewの文字を入力するごとに保存,セーブなど(予測変換にも対応) - まだどこにもないアプリを作る

 

キーワード ObservedObject 値変更 検知 How to detect ObservedObject value changes.

 

 

 

【SwiftUI】エラーメモProperty declares an opaque return type, but has no initializer expression from which to infer an underlying type

初心者向けです。私も初心者です。

 

以下のコードだと

 

import SwiftUI

 

struct Test: View {

    var body: some View {

    }

}

 

struct Test_Previews: PreviewProvider {

    static var previews: some View {

        Test()

    }

}

 

このようなエラーが発生してしまう。

f:id:rils_k:20220207192402p:plain

 

このように直したらエラーは消えた。

import SwiftUI

 

struct Test: View {

    var body: some View {

        Text("Hello, World!")

    }

}

 

struct Test_Previews: PreviewProvider {

    static var previews: some View {

        Test()

    }

}



このことから

var body: some View {
    }

の中にはなにかしらのUIが配置されていないといけないのだと思う。



【SwiftUI】TextfieldやText Editorで文字が入力されるごとに検知する方法。

onChange()を使えばできるようです。

 

最初に@Stateで変数を定義しておいて、

その値が変わるごとに呼ばれるといった感じです。

 

import SwiftUI

 

struct SwiftUIView: View {

    

    @State private var task = ""

    

    var body: some View {

        Form{

            Section(){

                TextField("タスクを入力",text:$task).onChange(of: task) { value in

                    print("TextField - onChange")

                    //テキスト保存などの処理

                }

            }

            Section (){

                TextEditor(text: $task).frame(width: 300, height: 200)

                    .onChange(of: task) { value in

                        print("TextEditor - onChange")

                        //テキスト保存などの処理

                    }

            }

        }

    }

}

 

struct SwiftUIView_Previews: PreviewProvider {

    static var previews: some View {

        SwiftUIView()

    }

}

 

f:id:rils_k:20220207044329p:plain

 

以下のサイト様を参考にさせていただきました。

www.yururiwork.net

 

 

ちなみにUIKitの場合は前にこんな記事を書きました。

rils-k.hatenablog.com

 

 

iPhoneアプリ『やりたくない』- おやすみモードでも特定のアプリのみ音で通知するやり方 -

iPhoneアプリ『やりたくない』- おやすみモードでも音で通知するやり方 - 

を紹介いたします。

他のiPhoneアプリでもこの方法は応用することできますよ。

 

アプリ内でも紹介していますが一応記事にしました。

 

 

iPhoneがおやすみモードの状態になっていると

そのままの状態では全てのアプリの通知が音では知らされなくなります。

 



おやすみモード中でも音で通知したい場合は設定方法があります。

 

以下を参考にしてみてください



※iOS15での場合
「設定」→「集中モード」→「おやすみモード」→「App→」→「+追加」→「やりたくない」アプリを選択→「完了」

 

1.設定アプリを開きます。

f:id:rils_k:20220206205255p:plain

 

2.集中モードをタップ

f:id:rils_k:20220206204815j:plain

 

3.おやすみモードをタップ

f:id:rils_k:20220206204832j:plain

 

4.App→をタップ

f:id:rils_k:20220206204849j:plain

 

5.+マークをタップ

f:id:rils_k:20220206204900j:plain

 

6. 検索窓に通知したいアプリの名前を入力。今回は「やりたくない」なので「や」ででてきました。

f:id:rils_k:20220206204913j:plain

 

7. タップしてチェックマークを入れます 

そしたら完了をタップ

f:id:rils_k:20220206204925j:plain

 

 

8.このように許可されたアプリに表示されていたらOKです。

これでこのアプリはおやすみモード時でもちゃんと音やバイブで通知してくれるようになります。

f:id:rils_k:20220206204945j:plain

 

 

おやすみモードって、何かに集中する時には必須の機能だと思います。

 

他の通知したいアプリもこのやり方で通知できるようになりますよ。

 

またおやすみモードだけでなく「パーソナルモード」や「仕事モード」でも同様の手順で通知をオンにすることが可能です。

 

やりたくない

やりたくない

  • Ryusuke Uchida
  • ライフスタイル
  • 無料

apps.apple.com

 

 

 

ちょっと今日はめんどくさくないので

おまけで別のやり方も紹介します

 

ロック画面からもできます。

f:id:rils_k:20220206210352j:plain

 

おやすみモードの横の丸3個のてんてんをタップします。

f:id:rils_k:20220206210439j:plain

 

下の設定ってところをタップします。

f:id:rils_k:20220206210610j:plain

 

これでもできますよこちらの方が若干速く設定できると思います。

 

 

 

参考になれば幸いです。

ありがとうございました。




 

Xcode Archive Distributeできない原因の一例 - Macの容量が足りないから

Macのストレージ容量が足りなくてアーカイブができなかったり、Distributeがうまくいっていませんでした。

 

報告します。