Szerintem ezzel nagyon sokat elárultam róla, hogy hogyan kell használni, elhelyezni. Fontos megjegyezni, hogy mielőtt allokálnánk és inicializálnánk egy példányt, szükség van egy statikus inicializálásra is. Egyes írások szerint az initWithFrame hívása előtt kell ezt elvégezni. Ez sem bonyolult.
[UIKeyboard initImplementationNow];
Az inicializáláshoz szükségünk van az objektum méreteire is.CGSize kbSize = [UIKeyboard defaultSize]; Ezen túl van egy másik függvény is, ami az adott pozícióba elforgatott kijelzőnem megfelelően forgatott billentyűzet méreteit adja meg. Ez a függvény a defaultSizeForOrientation és paraméterként az accelerometernél látott diszkrét forgatási paramétereknek megfelelő értéket várja.
Tegyünk ki egy View-t és egy billentyűzetet! Én ezt így oldottam meg.
UITextView *tvMessage;
UIKeyboard *kbKeyboard;
UIView *vMain = [[UIView alloc] initWithFrame: rect];
[...]
tvMessage = [[UITextView alloc] initWithFrame: CGRectMake(0.0f,0.0f,rect.size.width,rect.size.height - kbSize.height)];
kbKeyboard = [[UIKeyboard alloc] initWithFrame: CGRectMake(0.0f,rect.size.height - kbSize.height,rect.size.width,rect.size.height)];
[...]
[vMain addSubview: tvMessage];
[vMain addSubview: kbKeyboard];
[window setContentView: vMain];
Mondhatni, hogy ezzel készen is vagyunk. Őszintén szólva, amikor nekiálltam az eszköz használatának tanulmányozásához azt vártam, hogy nekem kell elkapkodni a billentyűleütéseket egy callback függvénnyel. De nem! Ennél sokkal egyszerűbben működik. Ahol áll a kurzor, ott szerkeszi a mezőt - abban az esetben, ha az szerkeszthető - csak bele kell bökni, hogy megjelenjen a kurzor és már lehet is pötyögni.UIKeyboard *kbKeyboard;
UIView *vMain = [[UIView alloc] initWithFrame: rect];
[...]
tvMessage = [[UITextView alloc] initWithFrame: CGRectMake(0.0f,0.0f,rect.size.width,rect.size.height - kbSize.height)];
kbKeyboard = [[UIKeyboard alloc] initWithFrame: CGRectMake(0.0f,rect.size.height - kbSize.height,rect.size.width,rect.size.height)];
[...]
[vMain addSubview: tvMessage];
[vMain addSubview: kbKeyboard];
[window setContentView: vMain];
typedef enum
{
UIKeyboardReturnKeyReturn = 0, // Return (gray background)
UIKeyboardReturnKeyGo = 1, // Go (blue background)
UIKeyboardReturnKeyGoogle = 2, // Google (blue background)
UIKeyboardReturnKeyJoin = 3, // Join (blue background)
UIKeyboardReturnKeyNext = 4, // Next (gray background)
UIKeyboardReturnKeyRoute = 5, // Route (blue background)
UIKeyboardReturnKeySearch = 6, // Search (blue background)
UIKeyboardReturnKeySend = 7, // Send (blue background)
UIKeyboardReturnKeyYahoo = 8 // Yahoo! (blue background)
} UIKeyboardReturnKeyType;
Van még egy setPreferredKeyboardType metódus, amivel elméletileg a billentyűzet típusát lehet beállítani. Azért írtam, hogy elméletileg, mert nekem nem sikerült viszont találtam róla leírást. Meg kell jegyezni, hogy a beállítás megtétele után a showPreferredLayout eljárást is meg kell hívni, hogy érvényesüljön. {
UIKeyboardReturnKeyReturn = 0, // Return (gray background)
UIKeyboardReturnKeyGo = 1, // Go (blue background)
UIKeyboardReturnKeyGoogle = 2, // Google (blue background)
UIKeyboardReturnKeyJoin = 3, // Join (blue background)
UIKeyboardReturnKeyNext = 4, // Next (gray background)
UIKeyboardReturnKeyRoute = 5, // Route (blue background)
UIKeyboardReturnKeySearch = 6, // Search (blue background)
UIKeyboardReturnKeySend = 7, // Send (blue background)
UIKeyboardReturnKeyYahoo = 8 // Yahoo! (blue background)
} UIKeyboardReturnKeyType;
[kbKeyboard setPreferredKeyboardType:UIKeyboardBlackDefault];
[kbKeyboard showPreferredLayout];
Ezekre az értékekre is elkészítettem az enumerációs típust. [kbKeyboard showPreferredLayout];
typedef enum
{
UIKeyboardDefault = 0, // default QWERTY layout
UIKeyboardNumeric = 1, // numeric/punctuation layout
UIKeyboardPhone = 2, // phone keypad
UIKeyboardURL = 3, // URL layout
UIKeyboardSMS = 4, // SMS (?) layout, shift disabled, num key goes to phone keypad
UIKeyboardBlackDefault = 5, // black version of default layout
UIKeyboardSpartan = 6, // spartan phone keypad
UIKeyboardBlackSpartan = 7, // black spartan (clean!)
UIKeyboardEmailWithSpace = 8, // email keypad w/ space key
UIKeyboardEmailWithAt = 9 // email keypad w/ @ instead of space
} UIKeyboardType;
Ha valaki ez utóbbiba életet tud lehelni, nyugodtan jelezzen. ...és egyébként is hozzá lehet szólni, kérdezni vagy jelezni, hogy mit látna a nagyérdemű szívesen.
{
UIKeyboardDefault = 0, // default QWERTY layout
UIKeyboardNumeric = 1, // numeric/punctuation layout
UIKeyboardPhone = 2, // phone keypad
UIKeyboardURL = 3, // URL layout
UIKeyboardSMS = 4, // SMS (?) layout, shift disabled, num key goes to phone keypad
UIKeyboardBlackDefault = 5, // black version of default layout
UIKeyboardSpartan = 6, // spartan phone keypad
UIKeyboardBlackSpartan = 7, // black spartan (clean!)
UIKeyboardEmailWithSpace = 8, // email keypad w/ space key
UIKeyboardEmailWithAt = 9 // email keypad w/ @ instead of space
} UIKeyboardType;