2

この問題を解決するために数日を費やしたので、解決策を共有することにしました。これにより、家族により多くの時間を割くことができます。

多数のボタン (5 など) を収容する必要がある UIToolbar があるとします。ユーザーが左端または右端のボタンをクリックしようとすると、代わりに隣接するボタンを押すことがよくあります。当初、コードは次のように見えました。

self.bookmarkButton = [[[UIBarButtonItem alloc] ...;
 self.sendButton = [[[UIBarButtonItem alloc] ...;    
 self.backstageButton = [[[UIBarButtonItem alloc] ...;
 self.voteButton = [[[UIBarButtonItem alloc] ...;
 self.vipButton = [[[UIBarButtonItem alloc] ...;

 UIBarButtonItem *sep0 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep1 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep2 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep3 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];


 [self setItems:[[[NSArray alloc] initWithObjects: self.bookmarkButton, sep0, self.sendButton, sep1, self.voteButton , sep2, self.backstageButton, sep3,  self.vipButton, nil]  autorelease]];

ボタンの幅を明示的に設定したり、セパレーターを削除したり、左端と右端のボタンの幅を広げたりするなど、いくつかの手法を試しましたが、さまざまな理由でうまくいきませんでした。

この問題を解決する最も確実な方法は、セパレーターを 2 つ追加することでした。1 つは左端のボタンの左に、もう 1 つは右端のボタンの右に配置します。そんな感じ:

self.bookmarkButton = [[[UIBarButtonItem alloc] ...;
 self.sendButton = [[[UIBarButtonItem alloc] ...;   
 self.backstageButton = [[[UIBarButtonItem alloc] ...;
 self.voteButton = [[[UIBarButtonItem alloc] ...;
 self.vipButton = [[[UIBarButtonItem alloc] ...;

 UIBarButtonItem *sep0 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep1 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep2 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];
 UIBarButtonItem *sep3 = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];

UIBarButtonItem *sepLeft = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];

UIBarButtonItem *sepRight = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease];

 [self setItems:[[[NSArray alloc] initWithObjects: sepLeft, self.bookmarkButton, sep0, self.sendButton, sep1, self.voteButton , sep2, self.backstageButton, sep3,  self.vipButton, sepRight, nil]  autorelease]];

これで問題は完全に解決しました。もちろん、ここでわかるように、すべてのボタンが中央に向かってわずかに移動しました。

http://pics.livejournal.com/andre_po/pic/00004t7f

しかし、これは妥当な価格です。

4

0 に答える 0