2010-04-09 55 views
1

我正在嘗試創建一個撥號號碼文本字段,即與旁邊坐着的NSStepper一起工作的文本字段。繼承NSTextField以創建撥號號碼文本字段

文本字段應顯示浮動,並允許用戶使用滾輪來調整它正在顯示的數字以及向上和向下箭頭鍵達到相同的效果。

它也應該切換到不同的增量,具體取決於按下哪些修飾鍵。 稍後我可能會實現一種行爲,當用戶在按住alt的同時向左或向右拖動鼠標左鍵或右鍵時,它將確定放置插入脫字符的位置(在數字的哪個位置),並且只增加該數字,以便用戶可以快速更新那些,幾十,幾百等部分。

雖然修飾鍵和鼠標拖動的細節只是這些,但細節,我的問題更關注以非常不顯眼的方式實現這一點的基礎,因此綁定和其他功能仍然可以繼續工作。

到目前爲止,我得到了NSTextField的一個子類(在其IB中的單元格中附有一個數字格式程序),並且是NSTextView的子類,用於撥號文本字段的字段編輯器。這是我可以覆蓋keyDown:使箭頭鍵更新發生。

問題是,從窗口的委託的windowWillReturnFieldEditor:toObject:返回該號碼撥號文本字段的字段編輯器似乎打破了綁定,通常感覺就像我不應該這樣做。

我該怎麼做呢?

PS .:你可以在http://gist.github.com/361265 找到子類代碼我不確定是否應該在這裏發佈它。

回答

0

我以前用過這個。首先格式化數字爲與電話:URL格式如下所示:

NSString *numberString = [@"tel://" stringByAppendingString:self.phoneLabel.text]; 

然後我做了什麼(因爲我的執行涉及到靜態的UITableView,我檢查了用戶觸摸的行這樣做:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString *numberString = [@"tel://" stringByAppendingString:self.phoneLabel.text]; 

    switch (indexPath.row) { 
     case 3: 
      // Phone Number Field Pressed 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:numberString]]; 
      break; 
     case 4: 
      // Send email using MailComposer 
      if ([MFMailComposeViewController canSendMail]) { 

       MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; 
       mailViewController.mailComposeDelegate = self; 
       [mailViewController setToRecipients:[NSArray arrayWithObject:self.emailLabel.text]]; 
       [mailViewController setSubject:@""]; 
       [mailViewController setMessageBody:@"" isHTML:NO]; 

       [self presentModalViewController:mailViewController animated:YES]; 

      } 
      break; 
     default: 
      break; 
    } 

} 

你可以實現這幾種方式,但是使用tel:格式,然後調用OpenUrl方法對我來說真的很好。