素人薬剤師プログラマの私。
体当たりでいろいろやっております。
=
最新作「漢方スクランブル」。
調剤薬局で薬剤師が漢方をとってくる過程をイメージしたものなのですが
これの「漢方の包数」の回答のところに
テキストフィールドをstringとして読んでくる→intの処理を入れているため、
ユーザがテキストフィールドに数値以外を入れてくるとプログラムが落ちる状態に。
というか、iPhoneのみでなく…ユニバーサルにしたら
…iPadの「Number Pad」には
いろいろ数字じゃないものが表示されすぎ!
※iPhoneのみの対応であれば普通のNumber Padが表示される
¥とか&くらいならまだ許せますが
なんと、Number Padのくせに英文字も!
変な記号!!
更には年月日まで!!
=
この状況を改善すべく、コードを書きました。
もっとエレガントな方法があればご教示いただければ幸いです。
なお、「テキストフィールド編集を検知する」方法は
SwiftサラリーマンさんのUITextfieldで文字を編集するを参考にしました。
いつもありがとうございます!Swiftサラリーマンさん。
intになりうる以外の文字をテキストフィールドに入れたらその文字を消し、
「ダメ!」という通知をだすようにしました。
arrayのところの文字列に着目。
愚直に調べてひろいあげます。これらの文字のうちいずれかが入っていると
テキストフィールドが消去され、回答ボタンが押せなくなる仕様です。
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(重 歌織)