iPhone Code Schnipsel: Maximale Anzahl Zeichen im UITextField begrenzen
Gegeben
Man hat ein UITextField und möchte verhindern, dass ein User mehr als X Zeichen eingeben kann.
Gesucht
Eine Lösung ohne UIAlertView. Es soll nur verhindert werden, dass weitere Zeichen eingegeben werden.
Lösung
Erstmal zwei Konstanten definieren:
static const NSInteger kUserNameMaxLength = 20;
static const NSInteger kTextFieldNameTag = 1;
Dann entsprechend dem UITextField das Tag zuweisen (static const NSInteger) und den delegate setzen:
textField.tag = kTextFieldTagLimited;
textField.delegate = self;
Dann lässt sich das Problem mit dieser UITextFieldDelegate Methode ziemlich einfach lösen:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.tag == kTextFieldTagLimited) {
NSString *testString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if ([testString length] > kUserNameMaxLength) {
textField.text = [textField.text substringToIndex:kUserNameMaxLength];
return NO;
}
}
return YES;
}
Schlüsselwörter: iphone, objective-c, programmierung, schnipsel
iPhone Code Schnipsel: Clang Static Analyzer
Gegeben
Man hat die ersten ViewController fertig, einiges an Logik geschrieben, so dass die Applikation eigentlich ganz gut funktionieren sollte. Der erste Start endet aber im Debugger und nach kurzem Prüfen ist man sich sicher, dass man irgendwo einen Bug im Object-Lifecycle hat - also ein Retain/Release/Autorelease zu viel oder zu wenig.
Gesucht
Ein schneller Weg, diese Fehler zu finden, ohne seinen eigenen Code noch einmal komplett durchgehen zu müssen.
Lösung
Der Clang Static Analyzer: http://clang-analyzer.llvm.org/
Einfach den letzten Build downloaden und entpacken. Am komfortabelsten ist es, wenn man das Verzeichnis gleich dem PATH hinzufügt. Dann in Xcode ein "Clean All Targets" ausführen und auf der Konsole in das Projektverzeichnis wechseln. Dort gibt man folgendes Kommando ein:
scan-build -k -V xcodebuild -configuration Debug -sdk iphonesimulator3.0
Wenn alles klappt, sollte Clang nun das Projekt scannen und am Ende eine Seite im Default Browser öffnen. Dort findet man dann eine Übersicht aller gefunden Fehler, Bugs und Verstöße gegen Coding Conventions. Die Punkte geht man einzeln durch und bekommt wunderbar erklärte Problembeschreibungen. Das sieht dann z.B. so aus:
Als Folge stehen die Chancen gut, dass der nächste Start der neuen App problemlos klappt.
Schlüsselwörter: iphone, objective-c, programmierung, schnipsel, xcode
Ruby Helper 1.1
Heute erschien endlich Version 1.1 unserer App Ruby Helper im App Store. Es enthält die folgenden neuen Dokumente:
- RSpec 1.2.4
- 4 Texte
- 75 Klassen
- 26 Module
- 513 Methoden
- Spec::Rails 1.2.4
- 3 Texte
- 19 Klassen
- 12 Module
- 93 Methoden
- Webrat 0.4.4
- 2 Texte
- 18 Klassen
- 7 Module
- 136 Methoden
Wir arbeiten außerdem an einem Feature, welches es ermöglicht, weitere Dokumente direkt aus der App runterzuladen (beispielsweise für Ruby 1.9). Voraussichtlich wird dieses Feature aber erst mit dem Release von iPhone OS 3.0 im Sommer veröffentlicht.
Schlüsselwörter: iphone, ruby, ruby on rails
Drei Links zum Sonntag (XIV)
Heute mal drei Links ohne Kommentare:
Schlüsselwörter: iphone, linktips
iPhone Code Schnipsel: Kennung des Gerätes
Gesucht
Die Kennung (Identifier bzw. UDID) eines iPhone oder iPod Touch programmatisch ermitteln.
Lösung
UIDevice *device = [UIDevice currentDevice];
NSString *uniqueIdentifier = [device uniqueIdentifier];
UIDevice bietet außerdem Instanzmethoden zur Bestimmung von Name (name) und Modell (model) des Gerätes sowie Name (systemName) und Version (systemVersion) des Betriebssystems. Beispiel für mein iPhone:
Name: MyPhone Model: iPhone SystemName: iPhone OS SystemVersion: 2.2.1
Schlüsselwörter: iphone, programmierung, schnipsel
1 2 3 ... 6 Ältere Artikel »
Auch abrufbar als: Atom
Schlüsselwörter
- berlin (2)
- blog (5)
- browser (2)
- cocoaheads (5)
- dropbox (1)
- git (7)
- idisk (1)
- iphone (28)
- javascript (2)
- kurztip (4)
- linktips (17)
- mac (9)
- macruby (1)
- objective-c (8)
- ortung (1)
- programmierung (22)
- rails (1)
- railsconf (7)
- ruby (6)
- ruby on rails (7)
- schnipsel (14)
- server (2)
- spiele (1)
- statistiken (3)
- stuttgart (3)
- testen (4)
- tidy (1)
- versionskontrolle (5)
- wwdc (1)
- xcode (9)
- xml (1)
