18 個の UIButton で構成される UITextField 用のカスタム キーボードを作成しました。テキストフィールドのinputViewとして設定されるUIViewです。
ボタンはinitWithFrame:
、コードを使用して UIView のメソッドで作成されます
UIImage* buttonImage =[[UIImage imageNamed:@"keyboard-button-background.png"] stretchableImageWithLeftCapWidth:1.0 topCapHeight:79.0];
UIImage* buttonPressedImage =[[UIImage imageNamed:@"keyboard-button-pressed-background.png"] stretchableImageWithLeftCapWidth:1.0 topCapHeight:79.0];
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitle:title forState:UIControlStateNormal];
[button setBackgroundImage:buttonImage forState:UIControlStateNormal];
[button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted];
button.frame = CGRectMake(xPosition, yPosition, buttonWidth, buttonHeight);
ボタンが押されると、そのボタンは として設定されenabled = NO
ます。少なくとも 1 つのボタンが有効になっている間、背景は完全に引き伸ばされます。すべてのボタンが無効になっており、UITextfieldresignsFirstResponder
と UITextField が再び First Responder になると、ボタンは表示されますが、背景画像は伸びないように見えます (少なくとも垂直方向ではなく、水平方向には問題ないようです)。
どこから解決策を探し始めればよいのかよくわかりません。私の推測では、それはカスタム キーボードがサブビューを描画する方法にあると思いますが、よくわかりません。
で背景画像を設定することでこれを修正できますlayoutSubviews
か、またはdrawRect:
そのようなものはありますか? 水平方向のストレッチが正常に機能するという事実は、UIButton のフレームが描画されているときに正しくないかどうか疑問に思います。
編集 左端のセルは単なるラベルであり、右側の数字のあるセルは UITextfields であり、カスタムキーボードがあります
キーボードの外観:
セル 3 でファーストレスポンダを辞任した後、キーボードが実際にどのように見えるか、次に 1 人のファーストレスポンダ (すべてのキーが無効) を与え、次に 4 つのファーストレスポンダを与えました。