0

在我的 RubyMotion 控制器中,我有 3 个文本字段。最后一个,当点击时,在委托中运行方法 didTapSomeField ,该方法推动另一个控制器。此文本字段无法像其他 2 一样进行编辑。

问题:当我从 nameField 选项卡到 emailAddressField 或从 emailAddressField 选项卡出来时,它在委托 didTapSomeField 上运行该方法。我已经三重检查了我的第一响应者代码,为什么如果 textField 不等于 someField,为什么它仍在运行 if 语句中的内容?谢谢您的帮助!

#
# method. textFieldShouldReturn
#
def textFieldShouldReturn( textField )
#---------------------------------------

    if textField == self.nameField

      self.emailAddressField.becomeFirstResponder

    elsif textField == self.emailAddressField

      self.didTapDoneButton

    end

end


#
# method. textField shouldChangeCharactersInRange replacementString
#
def textField( textField, 
               shouldChangeCharactersInRange: range,
               replacementString: string )
#----------------------------------------------------

  if textField == self.nameField

      true

  elsif textField == self.emailAddressField

      true

  end

end


def textFieldShouldBeginEditing( textField )
#--------------------------------------------

  if ( textField == someField )

    self.delegate.didTapSomeField \
           if self.delegate.respond_to?( :didTapSomeField ) 

    false

  else

    true

  end

end


我也试过:

def textFieldShouldBeginEditing( textField )
#--------------------------------------------

  if ( textField == someField )
    self.delegate.didTapSomeField \
           if self.delegate.respond_to?( :didTapSomeField )             
    false

  end

  true
4

1 回答 1

0

尝试用 public_send 替换 responde_to

于 2013-01-18T22:42:09.583 回答