LoginSignup
2
2

More than 5 years have passed since last update.

【Swift】iPadで「Number Pad」にドルだの…→変なキーを押したら文字を消してアラートを出すコードを書きました!

Posted at

素人薬剤師プログラマの私。
体当たりでいろいろやっております。


最新作「漢方スクランブル」。
調剤薬局で薬剤師が漢方をとってくる過程をイメージしたものなのですが
これの「漢方の包数」の回答のところに
テキストフィールドをstringとして読んでくる→intの処理を入れているため、
ユーザがテキストフィールドに数値以外を入れてくるとプログラムが落ちる状態に。

というか、iPhoneのみでなく…ユニバーサルにしたら
…iPadの「Number Pad」には
いろいろ数字じゃないものが表示されすぎ!

※iPhoneのみの対応であれば普通のNumber Padが表示される
写真 2015-04-17 16 29 21.png
¥とか&くらいならまだ許せますが写真 2015-04-17 16 29 29.png
なんと、Number Padのくせに英文字も!写真 2015-04-17 16 29 48.png
変な記号!!
写真 2015-04-17 16 39 49.png
更には年月日まで!!


この状況を改善すべく、コードを書きました。
もっとエレガントな方法があればご教示いただければ幸いです。
なお、「テキストフィールド編集を検知する」方法は
SwiftサラリーマンさんのUITextfieldで文字を編集するを参考にしました。
いつもありがとうございます!Swiftサラリーマンさん。

intになりうる以外の文字をテキストフィールドに入れたらその文字を消し、
「ダメ!」という通知をだす
ようにしました。
arrayのところの文字列に着目。
愚直に調べてひろいあげます。これらの文字のうちいずれかが入っていると
テキストフィールドが消去され、回答ボタンが押せなくなる仕様です。

FirstViewController.swift

class FirstViewController: UIViewController,UITextFieldDelegate{
//UITextFieldDeletate必須!
func textFieldDidEndEditing(textField: UITextField) -> Bool {
    func numbercheck(){
        //iPadのときのみ、数字以外入れてないかどうか調べる
        //水色のところに文字があるかどうかを判定してから動かす
        var str = hou.text
        let charArray = [" ","-","/",":",";","(",")","$","&","@",".",",","?","!","\'","\"","[","]","{","}","#","%","^","*","+","=","_","\\","|","~","","£","€","¥","q","w","e","r","t","y","u","i","o","p","l","k","j","h","g","f","d","s","a","z","x","c","v","b","n","m","Q","W","E","R","T","Y","U","I","O","P","L","K","J","H","G","F","D","S","A","Z","X","C","V","B","N","M","あ","い","う","え","お","か","き","く","け","こ","さ","し","す","せ","そ","た","ち","つ","て","と","な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ","ま","み","む","め","も","や","ゆ","よ","ら","り","る","れ","ろ","わ","を","ん","ー","「","」","?","!","。","、","ぁ","ぃ","ぅ","ぇ","ゎ","ぉ","っ","ゃ","ゅ","ょ","が","ぎ","ぐ","げ","ご","ざ","じ","ず","ぜ","ぞ","だ","ぢ","づ","で","ど","ば","び","ぶ","べ","ぼ","ぱ","ぴ","ぷ","ぺ","ぽ","年","月","日","時","分","1","2","3","4","5","6","7","8","9","0",",",".",":","×","÷","+","−","=","♪","☆","〒","→","〜","~","・","…","○","/","(",")"]
        for moji in charArray{
            var range = str.rangeOfString(moji)
            if range != nil {
                //変な文字が含まれている場合、入力した文字を強制的に消す
                textField.text = ""
        //回答ボタンが押せないようにする
        kaitouButton.enabled = false
           }
        }
    }
    let screenHeight = Int(UIScreen.mainScreen().bounds.size.height)
    if screenHeight == 1024{
        //iPadのときだけ変な文字が入ってないかどうか確認する
//        println("iPadだっせ")
        numbercheck()
    }

いかがでしょうか。
このソフト「漢方スクランブル」は薬学生向き・新人薬剤師向けではありますが、
普通に算数ゲームとしても愉しんでいただけること請け合いですので
是非ダウンロードよろしくお願いいたします!
また旧作「のんでいるくすり(ひみつにしておける服薬メモ)」や
デビュー作"ICF inputter"(iOS無料iOS¥300広告なしAndroid)も
よろしくお願いいたします!

                Kaori Shige(重 歌織)

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2