我的iOS應用程序有一個包含十幾個字段的窗體,我想在鍵盤上添加「Previous」/「Next」按鈕以幫助用戶在字段之間移動。我有這樣的事情:UISegmentedControl按鈕停止工作
for (UITextField *t in _textfields) {
t.delegate = self;
UIToolbar *toolbar = [[UIToolbar alloc] init];
[toolbar setBarStyle:UIBarStyleBlackTranslucent];
UISegmentedControl *segControl = [[UISegmentedControl alloc] initWithItems:@[@"Previous", @"Next"]];
[segControl addTarget:self action:@selector(switchTextField:) forControlEvents:UIControlEventValueChanged];
segControl.segmentedControlStyle = UISegmentedControlStyleBar;
segControl.tag = [_textfields indexOfObject:t];
if (segControl.tag == 0) [segControl setEnabled:NO forSegmentAtIndex:0];
else if (segControl.tag == [_textfields count] - 1) [segControl setEnabled:NO forSegmentAtIndex:1];
[segControl sizeToFit];
UIBarButtonItem *segItem = [[UIBarButtonItem alloc] initWithCustomView:segControl];
UIBarButtonItem *flexButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *doneButton =[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self.view action:@selector(endEditing:)];
[toolbar setItems:@[segItem, flexButton, doneButton]];
[toolbar sizeToFit];
[t setInputAccessoryView:toolbar];
}
我遇到的問題是,每隔一段時間段的一個停止工作。方法switchTextField
只是不被調用,該按鈕看起來正常,沒有禁用,但觸摸不註冊。有時它是「上一個」按鈕,有時它是「下一個」按鈕,從不同時出現,有時它們都可以正常工作。一旦其中一個按鈕卡住了,暫時修復它的唯一方法是在不使用工具欄的情況下點擊另一個文本框,或者關閉鍵盤並再次開始編輯。可能是什麼問題呢?
感謝您的提示重置選定的細分,這正是它是什麼。使用分段控制而不是按鈕的原因僅僅是表面化:我更喜歡當這些「prev/next」按鈕在單個控件中像段一樣連接,而不是在它們之間有空格的不同按鈕。 – SaltyNuts 2013-02-27 19:28:53
雖然它有點更多的工作,但您可以使用自己的背景圖像自定義'UIButton',看起來像連接的按鈕。我通常會盡量避免使用控件的實現方式(例如,使用選擇控件作爲按鈕),但如果它看起來/按照您喜歡的方式運行,那就太棒了。 – XJones 2013-02-27 19:58:51